Gérer les animations complexes dans Unity peut être un défi.
Sans une bonne organisation, le code peut devenir encombré et difficile à maintenir.
Les Animation Behaviours permettent de lier des événements spécifiques aux animations, simplifiant la gestion et enrichissant l’expérience utilisateur.
Apprenez à donner vie à vos personnages grâce à l'animation 3D.
Animation Behaviours en Unity : Introduction
Les Animation Behaviours sont des scripts basés sur la classe StateMachineBehaviour , permettant de lier des événements spécifiques au cycle d’une animation. Ils sont utiles pour ajouter de la logique directement aux transitions entre les états d’animation. Cela permet de déclencher des actions précises, comme jouer une animation aléatoire, synchroniser des sons, ou modifier des paramètres de gameplay.
Dans cet article, nous allons utiliser un StateMachineBehaviour pour déclencher une animation idle aléatoire dans notre modèle.
- Qu’est-ce qu’un Animation Behaviour ?
Un Animation Behaviour est un script dérivé de la classe StateMachineBehaviour que l’on peut attacher à un état d’animation dans l’Animator. Il permet de réagir à des événements comme le début ou la fin d’une animation via des méthodes spécifiques telles que OnStateEnter, OnStateExit, et d’autres.
L’un des avantages majeurs est la séparation de la logique d’animation de la logique de contrôle du personnage , ce qui rend le code plus propre et modulable. Les Animation Behaviours sont particulièrement utiles dans les situations où l’on veut exécuter des actions sans interférer directement avec le script principal du contrôleur de personnage.
Voici un répertoire des principales méthodes dérivant de la classe StateMachineBehaviour :
Méthode | Description | Utilisation courante |
---|---|---|
OnStateEnter | Appelée lorsque l’Animator entre dans un état. | Déclenche des actions spécifiques au début d’une animation (ex : jouer une animation ou un son, initialiser des valeurs). |
OnStateUpdate | Appelée à chaque frame pendant que l’Animator est dans un état. | Utilisée pour modifier continuellement des paramètres ou surveiller l’état pendant une animation. |
OnStateExit | Appelée lorsque l’Animator quitte un état. | Parfait pour réinitialiser des paramètres ou stopper certaines actions à la fin d’une animation. |
OnStateMove | Appelée pendant le calcul de Root Motion, après le calcul des mouvements. | Modifie les mouvements basés sur l’animation si le Root Motion est activé. |
OnStateIK | Appelée avant la mise à jour de l’inverse kinematics (IK). | Utilisée pour ajuster les animations en fonction des positions des objets ou du personnage (pour l’IK). |
OnStateMachineEnter | Appelée lorsque l’Animator entre dans un sous-état au sein de la State Machine. | Utile pour déclencher une action dès qu’on entre dans un sous-état (comme un groupe d’animations dans une sous-state). |
OnStateMachineExit | Appelée lorsque l’Animator quitte une sous-machine d’état. | Utile pour réinitialiser ou changer des états globaux à la sortie d’un sous-état. |
C’est le moment d’introduire un nouveau personnage sur la scène « Big Vegas ». Son modèle 3D est disponible dans les ressources ainsi que quelques animations associées. Le modèle possède trois animations idle différentes. Considérons juste deux : IdleOffensive et IdleWarrior. Configurer de façon adéquate le modèle et ses animations tel que nous l’avons vu précédemment. Nous souhaitons que, chaque fois que le personnage entre dans l’état d’inactivité, une de ces deux animations soit sélectionnée au hasard. Pour cela, nous allons créer un paramètre entier RandomIdle dans l’Animator. Ce paramètre sera utilisé pour déclencher l’une des deux animations idle disponibles. Dans l’Animator, ajoutez les trois animations distinctes pour l’état Idle. IdleSad sera l’animation par défaut. Créez des transitions entre les deux autres animations en fonction de la valeur de RandomIdle.
Par exemple :
- Si RandomIdle est égal à 1, jouer IdleOffensive.
- Si RandomIdle est égal à 2, jouer IdleWarrior
Nous aurons également besoin d’un script » RandomIdleAnimationBehaviour » à attacher au state IdleSad via le bouton Add Behaviour .
Voici la logique qui nous permettra de générer un nombre aléatoire et le passer à l’Animator :
usingUnityEngine;
publicclassRandomIdleAnimationBehaviour : StateMachineBehaviour {
overridepublicvoidOnStateEnter(Animator animator, AnimatorStateInfo stateInfo,
intlayerIndex) {
intrandomIdle = Random.Range(1, 3);
animator.SetInteger("RandomIdle",
randomIdle); // Définit le paramètre aléatoire
}
}
Dans cet exemple, lorsque le personnage entre dans l’état Idle, la méthode OnStateEnter est appelée et génère un entier aléatoire entre 1 et 2. Ce nombre est ensuite affecté au paramètre RandomIdle dans l’Animator.
Les Animation Behaviours sont un outil puissant pour enrichir vos animations en introduisant de la logique spécifique au moment où les animations démarrent ou se terminent. Dans cet exemple, nous avons vu comment utiliser OnStateEnter pour choisir aléatoirement une animation d’inactivité, rendant le comportement du personnage plus naturel et dynamique. Cela montre à quel point les Animation Behaviours peuvent enrichir l’expérience sans avoir besoin de scripts complexes.
La prochaine étape consistera à explorer l’utilisation des Blend Trees 1D pour un contrôle plus avancé des animations de mouvement.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Qu'est-ce qu'un Animation Behaviour dans Unity ?
Comment utiliser OnStateEnter pour les animations ?
Quels sont les avantages des Animation Behaviours ?
Comment intégrer des animations aléatoires avec Unity Animator ?
Comment les Animation Behaviours enrichissent-ils les animations ?
Conclusion
Les Animation Behaviours offrent une flexibilité considérable dans la gestion des animations en Unity. Quelle autre fonctionnalité d’Unity aimeriez-vous explorer pour enrichir vos projets ?