Unity3D Slerp vitesse de rotation
Je suis en utilisant Unity3D. J'aimerais faire pivoter un objet pour faire face à la direction du pointeur de la souris, mais de permettre à un maximum de vitesse de rotation, comme "max 100 degrés par seconde".
Il y a un exemple dans la doc, mais il ne fait pas ce que je veux.
Je pense que le Temps.le temps doit être le Temps.deltaTime, et je ne peux pas vraiment comprendre ce que le dernier paramètre n'. Est-il censé être le numéro qui se résumait au début vecteur?
http://docs.unity3d.com/Documentation/ScriptReference/Quaternion.Slerp.html
Aussi, je ne peux pas vraiment comprendre ce que le dernier paramètre n'. Est-il un temps pour la rotation?
Le code que j'utilise maintenant
Plane plane = new Plane(Vector3.up, 0);
float dist;
void Update () {
//cast ray from camera to plane (plane is at ground level, but infinite in space)
Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
if (plane.Raycast(ray, out dist)) {
Vector3 point = ray.GetPoint(dist);
//find the vector pointing from our position to the target
Vector3 direction = (point - transform.position).normalized;
//create the rotation we need to be in to look at the target
Quaternion lookRotation = Quaternion.LookRotation(direction);
//rotate towards a direction, but not immediately (rotate a little every frame)
transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, Time.deltaTime * rotationSpeed);
}
}
Je pense que le point faible est dans le troisième paramètre de la Slerp, mais je ne vois pas quoi y mettre.
Time.deltaTime
et à l'aide de la transformation en cours au lieu de le transformer lors de la rotation a commencé en premier, puis le troisième paramètre est fondamentalement la façon dont beaucoup de la rotation doit être fait de cette image. C'est le code que vous avez maintenant de travail?Nope, il faisait presque immédiate de rotation.
OriginalL'auteur Agostino | 2013-12-02
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour maintenir une variable distincte pour l'interpolation et le mettre à jour à chaque image. Sinon votre Temps.deltaTime * rotationSpeed va continuer jusqu'toujours passé le 0-1 gamme.
Si theodox répondu à votre question, vous devez accepter cette réponse.
Il m'a donné le bon conseil, mais ce n'est pas exactement ce dont j'ai besoin. Je ne peux pas garder un objectif fixe de rotation parce que j'ai besoin de le changer à chaque image pour suivre le muouse. Je vais vous donner un +1, mais j'accepte le code fixe ci-dessous. Theodox, est-ce juste assez pour vous?
OriginalL'auteur theodox
Ce code fonctionne, mais je ne suis pas sûr que c'est 100% correct.
OriginalL'auteur