Page 1 sur 2

[RESOLU][DB-AL] jouer deux animation en meme temps

Publié : 14 Jan 2020 13:19
par sisir1980
Bonjour

en plein apprentissage d unity j'essai de jouer deux animations sur deux composants suivant une condition .
Je n'ai aucun problème lorsque je le fais sur un seul composant mais quand je le fais sur les deux j'ai une erreur de type :

Code : Tout sélectionner

Parameter 'a' does not exist.
UnityEngine.Animator:SetBool(String, Boolean)
animation:Update() (at Assets/animation.cs:31)
si je retire la deuxieme animation du code il n'y a plus d erreur d'apres mois tous les champs sont bien renseigner dans les composant mais je me demande si le problème ne viens pas du code

j'ai oublié aussi de vous dire que c'est deux animations différentes

Code : Tout sélectionner

public class animation : MonoBehaviour
{
	
	public Text txt1;
	public Animator anim;

	public InputField myInputField;
string txt ="AB";
    // Start is called before the first frame update
    void Start()
    {
        anim=
        	GetComponent<Animator>();
             
        
 
    }

    // Update is called once per frame
    void Update()
    {
 txt1.text=myInputField.text;
txt=myInputField.text;
    	if (txt=="AB"){
anim.SetBool("a",true);
anim.SetBool("b",true);
myInputField.text="";
    	}
    }
    public void change(){
    	txt1.text=myInputField.text;
txt=myInputField.text;

}
}
merci de votre aide
cdt

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 13:43
par Max
Bonjour,

Il faut aussi apprendre à interpréter les messages d'erreur. Visiblement, le paramètre "a" n'existe pas sur le controller "anim".
Tu parles de deux components Animator dans ton message, mais dans ton code tu ne fais référence qu'a un seul (anim).

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 15:01
par sisir1980
Bonjour

meme en déclarant un deuxieme composant j'ai le meme problème avec le meme message d erreur par contre si je retire une animation dans le code l'autre fonctionne donc je ne vois pas comment faire car j'avais bien compris qu'il ne trouve pas "a" mais en retirant la ligne du "b" il retrouve "a".

cdt

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 15:19
par Max
Si je résume:

tu as deux GameObjects, avec chacun un Animator. Donc au total deux Animators.
Chaque animator possède deux paramètres Bool nommés "a" et "b".

j'ai bon jusque là ?

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 17:01
par sisir1980
oui tout a fait

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 17:02
par sisir1980
heu petite erreur dans la premiere animation il n'y a que a et dans la deuxieme il n'y a que b

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 17:27
par boubouk50
la voilà ton erreur. Dans ton code, anim est déclaré pour le gameObject en cours et tu essaies d'accéder au paramètre a et b. Or les deux gameObjects possèdent soit l'un soit l'autre donc tu ne peux pas y accéder donc erreur.
Pourquoi ne pas l'appeler a dans les deux cas? Puisque les animations sont séparées, il n'y aura pas conflit.
Ou alors, tu peux définir le nom dans une variable que tu affecteras depuis l'Inspector.

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 17:50
par sisir1980
bonjour

la premiere solution ne fonctionne pas certe je n'ai plus d'erreur mais il n'y a qu'une animation qui se met en route .
et pour la deuxieme solution je ne vois pas trop comment faire je suis un débutant.

Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 19:22
par Max
Comme suggéré plus haut, tu as deux animators à contrôler, pourquoi ne pas les mettre en cache par le biais de l'inspector. Et déclencher tes animations sur chaque animator par tes SetBool().
Genre:

Code : Tout sélectionner


	public Animator animA;
	public Animator animB;
	...
	

    // Update is called once per frame
    void Update()
    {
       ...
    	if (txt=="AB")
    	{
          animA.SetBool("a",true);
          animB.SetBool("b",true);
          ...
    	}
    }


Re: DB jouer deux animation en meme temps

Publié : 14 Jan 2020 20:06
par sisir1980
merci ca fonctionne j'avais testé cela sauf que dans le void start je déclarais

Code : Tout sélectionner

 anim=
        	GetComponent<Animator>();
             test=
        	GetComponent<Animator>();
et en le retirant sa fonctionne

vous etes des dieux
un grand merci