Je tourne mon personnage de jeu pour regarder la cible en utilisant le code suivant:
transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f)
startQuaternion est la rotation actuelle du personnage quand une nouvelle cible est donnée.
lookQuaternion est la direction que le personnage doit regarder et il est défini comme ceci:
destinationVector = currentWaypoint.transform.position - transform.position;
lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up);
tournantNormalizer est juste Time.deltaTimeincrémenté et turningSpeedest une valeur statique donnée dans l'éditeur.
Le problème est que bien que le personnage tourne comme il se doit la plupart du temps, il a des problèmes lorsqu'il doit faire près de 180 degrés. Ensuite, il tremble parfois et reflète la rotation:

Dans cette image mal dessinée, le personnage (à droite) commence à se tourner vers le cercle à gauche. Au lieu de simplement tourner à gauche ou à droite, il commence cette "danse miroir":
- Il commence à tourner vers le nouveau parement
- Ensuite, il s'enclenche soudainement au même angle mais de l'autre côté et continue de tourner
Il effectue cette "mise en miroir" aussi longtemps qu'il regarde la cible. Est-ce une chose avec des quaternions, slerping / lerping ou autre chose?
EDIT1: Apparemment, le problème ne provient pas de la rotation elle-même. Le problème le plus probable est que le personnage se déplace vers le visage pendant qu'il tourne. En limitant l'angle, entre face et cible, lorsque le personnage est autorisé à se déplacer, il réduit et parfois élimine la rotation instable / miroir.
Bien sûr, cela soulève plus de questions, pourquoi le personnage ne peut-il pas bouger et tourner en même temps sans problèmes? Code utilisé pour le mouvement:
transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);