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 .. 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 ...
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
}
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 !