Page 1 sur 1

Animation 2D ne déclanche pas

Publié : 04 Sep 2021 11:22
par GhostBlue93
Bonjour à tous,

Je suis en trains de créer un jeu 2D unity en C#, et je rencontre un souci pour l'animation, pouvez vous m'aider svp.

mon animation de marche ne se déclanche pas, pourquoi ?

voici mon code :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mage : MonoBehaviour
{
    float speed = 0.1f;
    public float h, v;
    public Animation anim;

    void Start()
    {
        anim = GetComponent<Animation>();
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxis("Horizontal") * speed;
        v = Input.GetAxis("Vertical") * speed;

        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            transform.localScale = new Vector2(-1, 1);
            anim.Play("marche");
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.localScale = new Vector2(1, 1);
        }

        transform.Translate(h, v, 0);
    }
}

merci d'avance

Re: Animation 2D ne déclanche pas

Publié : 04 Sep 2021 11:48
par Max
Bonjour,

Ta question manque de précision. Tu as donc certainement un component 'Animation" sur ton personnage (Player). A savoir que c'est plutôt obsolète comme système désormais. L'animation qui y est liée contient-elle bien une séquence d'animation nommée "marche" (en respectant les majuscules/minuscules) ?
L'animation est-elle valide ? S'entend, si tu la testes, ton personnage marche-t-il bien comme attendu ?

Re: Animation 2D ne déclanche pas

Publié : 04 Sep 2021 15:18
par jmhoubre
Bonjour,

c'est peut-être normal, mais la ligne anim.Play("marche") n'apparait pas dans la seconde branche du if, donc l'animation ne fonctionnera que sur les flèches gauche. Je la déplacerai en dehors du bloc du if, juste avant transform.Translate().

Re: Animation 2D ne déclanche pas

Publié : 12 Déc 2021 15:17
par Drenfa
Bonjour,
Dans ton code je vois quelque soucis comme l'appuis d'une touche, si tu utilise

Code : Tout sélectionner

float h = Input.GetAxis("Horizontal") * speed * Time.deltaTime //Pour au fil du temps (item pour le vertical)
	//Et le
	// if(Input.getKeyDown(KeyCode.LeftArrow)
	//tu peux le remplacer par
	if(h > 0){//Mouvement à droite
		//Tranlate(...)
		animator.Play("marche");
	}
	else if (h< 0{/Mouvement à gauche
		//Translate(...)
	}
	//Idem pour le vertical
Et pour le soucie de l'animation verifie si l'objet dans lequel contient le scipts contient en effet un Animator
et relie bien une animation
Idle
à l'animation correspondante comme ceci Image
de plus décoche cette case Image sur la transition de l'animation Idle et marche en cliquant sur celle-ci