Lisse rotation de caractère
Voici mon code pour déplacer dans les quatre directions cardinales:
if (Input.GetKeyDown(KeyCode.RightArrow)){
transform.forward = new Vector3(0f, 0f, 1f);
}
else if (Input.GetKeyDown(KeyCode.LeftArrow)){
transform.forward = new Vector3(0f, 0f, -1f);
}
else if (Input.GetKeyDown(KeyCode.DownArrow)){
transform.forward = new Vector3(1f, 0f, 0f);
}
else if (Input.GetKeyDown(KeyCode.UpArrow)){
transform.forward = new Vector3(-1f, 0f, 0f);
}
Mon personnage instantanément tourne dans les quatre directions de déplacement, Le problème que je vais avoir est d'essayer de comprendre comment je peux lisser entre les deux directions. Ce que j'essaie de dire c'est que si le personnage est vers le nord et que vous appuyez sur le bouton pour aller à l'ouest, au lieu de instantanément tournant à l'ouest, j'aimerais voir le caractère tourner doucement dans les degrés de la direction de l'ouest.
Ive de recherche et essayé de tutoriels, mais aucun d'entre eux travaillaient. Toute solution?
OriginalL'auteur SpicyWeenie | 2011-11-06
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la Slerp fonction. Ce sera probablement faire ce que vous voulez.
http://unity3d.com/support/documentation/ScriptReference/Quaternion.Slerp.html
Exemple Simple:
De sorte que vous obtiendrez le Quaternion de votre rotation. Copie dans un nouveau Quaternion et d'augmenter ou de réduire la rotation sur un ou plusieurs axes.
Vous avez déjà un exemple sur la façon d'obtenir des combinaisons de Touches. Tout ce que vous avez à faire est d'ajouter que l'extrait de code. Je editted mon post pour montrer un exemple simple.
OriginalL'auteur w00