je tente de déclencher une rotation de 90 degrés sur l'axe Y d'un cube et enregistrée en tant qu'animation.
Chaque fois que j'appuie sur la touche A, le cube est censé pivoter en axes locaux.
Mon but est de le faire avancer toujours de l'avant sur l'axe X grâce à une touche.
Sans l'animation cela marche bien, je fais pivoter le cube en axes locaux Y et j'avance toujours dans la direction choisie, amis ce n'est pas beau visuellement, puisqu'on passe de 0 à 90 degrés sans transition.
Mais si je rajoute l'animation pour fluidifier le mouvement de rotation, elle repope toujours à son début, sans incrémenter la rotation de 90 degrés. Du coup j'avance toujours dans la même direction.
Je voudrais donc savoir s'il est possible de jouer cette animation comme si elle était en axes locaux, de manière à ce que le cube pivote bien de 90 en 90 degrés. Voici le code:
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour {
int speed;
Vector3 movePlayer; // For the player's translate
Vector3 rotatePlayer; // For the player's rotation
Animation playerRotate;
void Start () {
speed = 500;
playerRotate = GetComponent<Animation> ();
}
// Update is called once per frame
void FixedUpdate () {
// Déplacement du cube sur l'axe X ----------------------------
if (Input.GetKey (KeyCode.Q))
{
movePlayer = new Vector3 (1, 0, 0);
transform.Translate(movePlayer * Time.deltaTime, Space.Self);
rigidbody.AddRelativeForce (movePlayer * speed * Time.deltaTime);
rigidbody.useConeFriction = false;
}
// Rotation animée du cube en Y en axes locaux -----------------
if (Input.GetKeyDown (KeyCode.A))
{
playerRotate.Play();
rotatePlayer = new Vector3 (0, 90, 0);
transform.Rotate(rotatePlayer, Space.Self);
}
}
}