SimpleMove, comment ça marche..

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

SimpleMove, comment ça marche..

Message par Axel74 » 27 Mars 2017 16:14

Bonjour bonsoir tout le monde,

Je me posais la question sur le fonctionnement du character controller et sa fonction "SimpleMove" qui a des particularités qui m'intéressent bien en terme de déplacement. Je ne suis pas spécialement à la recherche d'aide pour résoudre un problème mais plutôt à savoir comment fonctionne cette fonction, qui néanmoins me serait bien utile pour continuer à développer qu'en même.

En effet lorsque l'on se sert de cette fonction j'ai déjà remarqué que lors d'un déplacement de notre Character on pouvait foncer dans un mur sans qu'il rentre dedans.

Dans mon cas, sur un asset et un jeu vidéo que je développe, j'ai des déplacements d'objets mais qui ne sont pas dû à mes demandes (par clavier ou autres). Ils ont des déplacements automatisés vers un Vector3 qui n'est pas spécialement un point fixe.

J'ai souvent remarqué que peu importe la méthode de déplacement que j'effectuais à mes objets, ils avaient tendance à rentrer DANS un autre objet lorsqu'il rentre en collision et ce en continu puisque je leur demande d'aller dans la direction de celui ci. (Propriété de détection de collision du rigidbody en Continuous dynamic, mais là n'est pas vraiment la question).
J'ai donc essayé de fouiller dans les limbes du Physics Manager :hehe: .. pour me renseigner un peu plus sur ce que je pouvais modifier réellement à par la gravité et une ou deux variable qui m'étaient déjà connu.

En fin de compte, je me suis dis mais comment marche cette fonction SimpleMove ? Comment ils ont développé cette fonction, surtout avec un seul collider. Car moi même ayant déjà essayé avec d'autre fonction tel que :

Code : Tout sélectionner

... rigidbody.AddForce ...
... transform.Translate(Vector3) ...
... MoveDirection ...
J'ai passé beaucoup de temps à essayer de trouver une solution pour pas que mon objets rentre dans un mur lorsque celui ci va dans sa direction, qu'il s'arrête réellement etc... J'ai fini par trouver y a de ça quelque mois, alors je reviens sur ce sujet pour essayer de perfectionner un peu les déplacements lorsqu'il y a collision car ce n'est pas encore très beau.
Dans l'idée, je ne veux pas que mon objet esquive le mur, pas de NavMesh, non je veux qu'il y ai réellement un déplacement et que s'il rentre en contact avec un autre objet, soit il le pousse soit il s'arrête..

J'ai déjà pu essayer quelque chose comme ceci :

Code : Tout sélectionner

OnCollisionEnter (Collision col) { //Ou OnCollisionEnter
	//On arrête d'update la position
}

OnCollisionExit (Collision col) { //Ou OnCollisionEnter
	//On update la position
}
Et ça ne fonctionne pas encore comme je le souhaite car l'objet rentrera dans le mur quoiqu'il arrive, va donc rebondir en arrière, ne sera pas en collision, mon script va donc encore update sa position et il va rentrer dans le mur comme ça en continue.

Connaissez vous donc d'autres fonctions de mouvement pour un objet hors l'utilisation du "CharacterController" et le "SimpleMove" ?
Ou est ce que vous en savez plus sur son fonctionnement afin d'essayer que je le programme moi même, que j'évite le characterController..

En fonction des réponses j'essayerai d'envoyer une vidéo pour mieux se rendre compte de quoi je parle.

En espérant que le sujet en intéressera d'autres !
Douille ou l'ail que pote étaux ? Yes I like.

Répondre

Revenir vers « Scripting »