Bonsoir,
J'ai codé un petit script de mouvement et d'animation pour un personnage 2D (j'ai utilisé des sprites de Mario). Les déplacements fonctionnent, par contre au niveau des animations rien ne fonctionne. L'animation Idle tourne en boucle dans l'animator et les variables d'animation que j'utilise ne sont pas mise à jour pour les transitions entre les animation.
Dans la scène, j'ai divisé le sprite du joueur en trois partie : tête, bras et corps dans un objet vide appelé Mario. Le script de déplacement permet de bouger le Rigidbody2D (Mario et tous les éléments du corps) à droite ,à gauche et permet de sauter, tous ça avec le clavier mais aucune des animations ne sont jouées. Les animations sont situées dans l'objet Mario, le corps qui est une partie de l'objet "Mario" devrait s'animer en utilisant l'axe "Horizontal" avec une valeur créé nommé "Speed" dans l'animator et référée dans mon script de déplacement. Mais cela ne fonctionne pas et la variable vitesse n'est même pas actualisée. Pareil pour l'animation de saut.
Vous auriez une idée ?? Merci d'avance !
[DB-AL] Problème d'animation 2D non jouée.
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Re: [DB-AL] Problème d'animation 2D non jouée.
Bonjour,
Il serait plus simple de nous communiquer ton code dans son ensemble ("script de déplacement")
Ps : utilise les balises code.
Il serait plus simple de nous communiquer ton code dans son ensemble ("script de déplacement")
Ps : utilise les balises code.
Re: [DB-AL] Problème d'animation 2D non jouée.
Si si, bien sûr, je transmet le code :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour {
float x;
float acceleration = 20f;
float maxSpeed = 2.5f;
float jumpForce = 140f;
public bool asGrounded;
public bool asJump;
private Rigidbody2D rigidbody2d;
private Animator animatorMario;
// Use this for initialization
void Start () {
rigidbody2d = GetComponent<Rigidbody2D> ();
animatorMario = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
animatorMario.SetFloat ("Speed", rigidbody2d.velocity.x);
animatorMario.SetBool ("IsGrounded", asGrounded);
animatorMario.SetBool ("IsJumped", asJump);
}
void FixedUpdate () {
//Controle au clavier...
//Déplacement horizontal droite et gauche...
x = Input.GetAxis ("Horizontal");
rigidbody2d.AddForce ((Vector2.right * acceleration) * x);
if (rigidbody2d.velocity.x > maxSpeed && asGrounded == true)
rigidbody2d.velocity = new Vector2 (maxSpeed, rigidbody2d.velocity.y);
if (rigidbody2d.velocity.x < (-maxSpeed) && asGrounded == true)
rigidbody2d.velocity = new Vector2 (-maxSpeed, rigidbody2d.velocity.y);
//Saut...
if (Input.GetAxis ("Jump") == 1 && asGrounded == true) {
rigidbody2d.AddForce (new Vector2 (rigidbody2d.position.x, jumpForce));
}
}
void OnCollisionEnter2D () {
asGrounded = true;
asJump = false;
}
void OnCollisionExit2D () {
asGrounded = false;
asJump = true;
}
}
Re: [DB-AL] Problème d'animation 2D non jouée.
Re,
pour déboguer le plus simple c'est les Debug.Log (et autres) pour visualiser la valeur des différentes variables. Mais aussi ce qu'il faut faire c'est de toujours vérifier qu'un GetComponent() a fonctionné et il vaut mieux initialiser toutes les variables avec des valeurs par défaut.
Par exemple.
pour déboguer le plus simple c'est les Debug.Log (et autres) pour visualiser la valeur des différentes variables. Mais aussi ce qu'il faut faire c'est de toujours vérifier qu'un GetComponent() a fonctionné et il vaut mieux initialiser toutes les variables avec des valeurs par défaut.
Par exemple.
Code : Tout sélectionner
// Use this for initialization
void Start () {
asGrounded = true;
asJump = false;
rigidbody2d = GetComponent<Rigidbody2D> ();
if( rigidbody2d == Null) Debug.Log ("Aie!");
animatorMario = GetComponent<Animator> ();
if( animatorMario == Null) Debug.Log ("Caramba!");
}