Pour programmer les animations nous allons créer un script.
Pour le créer, il faut faire un Clic-droit dans l'onglet Project (en bas) puis Create > C# Script. Tu devras choisir un nom pour ton script, pense à mettre un nom qui a un sens. Par exemple AnimateurBarbare pour l'animation d'un barbare ou AnimateurCube pour un cube....
Pour ouvrir un script et pouvoir le modifier, il te suffit de double-cliquer dessus. L'interface Monodevelop va s'ouvrir et tu vas pouvoir écrire/modifier ton script en C# !
N'hésite pas consulter la page sur la création de Script pour plus d'informations.
Pour créer un nouveau script :
Pour accéder à l'Animator du GameObject qui va jouer les animations nous allons devoir le récupérer.
De manière générale, on va préférer définir une variable dans le script pour notre objet, mais choisir le GameObject depuis l'interface Unity. (Comme dans l'exemple ci-contre)
Pour pouvoir choisir le GameObject directement depuis Unity, on va définir une variable public.
Ce mot-clé 'public' indique que l'on peut modifier le contenu de la variable ailleurs que dans le script.
Attention ce mot-clé public doit toujours apparaître en premier lors de la définition de la variable.
Choisir l'Animator depuis Unity avec une variable public dans notre Script.
En C#, à chaque fois que l'on veut créer une variable il faut définir le type. En plus des types simples (Int, Bool, Float), il existe plein de types complexes pour les différents GameObject et leurs éléments.
Pour les animations, l'objet que l'on utilise est l'Animator. Notre variable contenant l'Animator sera donc de type Animator. Attention la déclaration de type se fait avant de donner le nom de la variable mais après le mot-clé public.
Ainsi notre déclaration ressemble à ça :
Attention ! Sur tous les codes suivants, 'anim' fait référence au code ci-contre !
L'endroit ou l'on écrit notre code est important.
Les déclarations de variables se mettent avant les fonctions qu'on utilise comme dans l'exemple ci-contre.
Il existe différentes fonctions qui sont déclenchées à différents moments du jeu. Par exemple la fonction Start() qui se déclenche une fois en début de partie, ou la fonction Update() qui se déclenche à chaque mise à jour du jeu.
Tu peux retrouver d'autres fonctions utiles comme OnTriggerEnter() ou OnTriggerExit() en allant sur la page de création de Scripts.
Attention en C#, il faut toujours mettre un ; en fin de ligne.
Après avoir créer tes paramètres dans l'Animator et avoir régler les valeurs déclenchant les transitions, on va utiliser notre script pour changer ces paramètres aux moments opportuns.
Pour modifier les valeurs des paramètres, on va pouvoir utiliser les fonctions suivantes :
Avec SetBool tu peux définir la valeur d'un paramètre de type Bool (soit 'true' soit 'false').
Tu peux aussi donner une variable comme valeur !
Avec SetInteger tu peux définir la valeur d'un paramètre de type Int.
Tu peux aussi donner une variable comme valeur !
Avec SetFloat, tu peux définir la valeur d'un paramètre de type Float.
Tu peux aussi donner une variable comme valeur, une position par exemple !
Ces fonctions vont être appelées à différents endroits du code en fonction de ce que l'on veut faire. D'autres fonctions peuvent être utiles par exemple pour récupérer si une touche est appuyée ou si la souris est cliquée... N'hésite pas à te rendre sur la page Création de Scripts pour trouver les informations qui te serons utiles.
Voici un petit exemple pour vérifier que nos transitions fonctionnent correctement.
On a un cube avec trois animations :
On a également les transitions suivantes :
On a donc le graphe suivant :
Pour réaliser le script nous aurons donc besoin d'utiliser les fonctions permettant de détecter la collision et celles permettant de détecter l'appui sur une touche.
Nos paramètres sont des booléens on utilisera donc anim.setBool() pour changer leur valeur.
Pour la collision on peut utiliser les fonctions OnTriggerEnter() et OnTriggerExit().
Pour les touches on peut utiliser la fonction Update() et vérifier si la touche que l'on souhaite est appuyé avec Input.GetKey (KeyCode.nom_de_ma_touche) qui retourne vrai si la touche en question est appuyé et faux sinon.
Une fois qu'on a mis le script sur notre objet et la variable Anim contient notre Animator, on peut lancer le jeu et tester nos animations.
Il peut être intéressant de garder la fenêtre Animator ouverte en bas de page pour voir si les transitions et les animations tournent correctement.
On voit sur le graphe une barre de progression en bleu sur l'animation qui est en cours. Quand on change d'animation la flèche de transition passe en bleu. On voit aussi que la valeur des variables change dans la partie paramètre (cases cochées pour les booléens).
Le graphe peut être très utile en cas de problème pour voir si les transitions sont bien faites et détecter d'où vient le problème.
Pour jouer un clip d'animation, tu peux simplement utiliser 'Play' et spécifier ensuite le nom du clip à jouer !