Problème derotation sur une animation

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
vertigo13
Messages : 20
Inscription : 18 Oct 2019 22:12

Problème derotation sur une animation

Message par vertigo13 » 19 Oct 2019 18:26

Bonjour,

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);
	
		}
	}
}
 

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème derotation sur une animation

Message par Max » 20 Oct 2019 10:39

Bonjour,

essayer comme tu essais de le faire de coupler une rotation par le transform et une animation sur le même axe ne sera à mon avis que source de problèmes.
Si tu souhaites avoir une rotation progressive, alors regarde par exemple certaines fonctions plutôt bien adaptées à ce genre de problématique, comme par exemple Quaternion.Lerp. En complément de la doc, les exemples d'utilisation sur le net ne manquent pas ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ


vertigo13
Messages : 20
Inscription : 18 Oct 2019 22:12

[RESOLU] Re: Problème derotation sur une animation

Message par vertigo13 » 21 Oct 2019 11:04

Merci pour ces réponses,

les quaternions sont en effet la bonne option pour ce que je veux faire.
En cherchant dans la doc j'ai trouvé mon bonheur.

Répondre

Revenir vers « Scripting »