
Créez des contrôleurs d'animation pour vos personnages comme vous le feriez pour un script, afin qu'ils soient suffisamment simples pour être réutilisés, pris en charge et débogués tout au long du cycle de développement.
Toutes les captures d'écran ci-dessous proviennent de l'animation du personnage Henry dans Firewatch de Campo Santo.

Les arbres mélangés sont parfaits pour cacher la complexité. Un arbre de mélange n'a pas d'état car il ne rappelle pas dans le code. Il se fond entre les différents clips en fonction des paramètres que vous définissez.
L'important est que vous pouvez itérer sur Blend Trees sans vous soucier de casser le reste de votre jeu. Vous pouvez masquer un réseau complexe d'états et empêcher les bugs plus tard, car vous ne pouvez pas lier le comportement à la plupart des animations dans un arbre de mélange.

Il est utile de considérer les couches comme une classe dans un script. Vous voulez que chaque élément d'une couche remplisse à la fois la même fonction logique et comportementale. En effet, chaque couche individuelle contrôle les autres couches qu'elle écrase, qu'elle affecte ou non certains os, qu'elle soit additive, etc.
Les schémas logiques réutilisables dans les machines d'état et de sous-état accélèrent le développement, facilitent le débogage et peuvent réduire les bugs, tout en permettant à plusieurs personnes de créer du contenu similaire.
Les sections suivantes présentent des motifs utiles pour structurer vos couches.

Ce schéma facilite le débogage car vous pouvez voir clairement les transitions sortir et revenir à l'état vide. Chaque rayon du hub doit réinitialiser tout état qu'il touche.
Les rayons sont des candidats solides pour la réalisation de machines à sous-états à l'aide des motifs suivants.

En regroupant les états dans un motif « intro » – exécution/boucle – « outro », vous pouvez attacher correctement des événements d'animation ou des comportements de machine d'état aux états intro et outro. Un peu comme dans un arbre de mélange, vous pouvez itérer et modifier les états d'exécution/boucle internes sans craindre de casser votre jeu.

Pour les animations interruptibles, en particulier les animations guidées par l'entrée du joueur, scindez votre clip en deux parties. Tout d'abord, maintenez une section critique qui contient tous les changements d'état, les effets et les dommages qui doivent toujours jouer jusqu'à la fin. Deuxièmement, concevez une animation qui vous plaît bien et qui peut être interrompue par de nouvelles entrées.
Une fois que vos animations se comportent et apparaissent comme souhaité, vous devez faire remonter l'état de vos animateurs dans l'état de votre jeu. Consultez les sections suivantes pour connaître les points clés à garder à l'esprit.
Les comportements de machine d'état sont des morceaux de code que vous pouvez attacher à n'importe quel état d'animation. Utilisez-les pour lier directement les comportements à l'état de l'animateur lui-même.
Évitez d'y écrire du code d'expérience de jeu complexe, car il peut être difficile de savoir d'où proviennent vos changements d'état. Si vous utilisez State Machine Behaviour pour piloter le code d'expérience de jeu, tirez parti d'un système de messagerie, parlez à un gestionnaire ou déclenchez votre code à partir de paramètres à un niveau supérieur.
Debug.Break() est l'un des comportements de machine d'état les plus efficaces que vous pouvez utiliser. Attachez-le n'importe où dans la configuration de votre animation et vous bénéficierez d'un point d'arrêt similaire à celui d'un système de programmation de scripts visuels.
Utilisez du code C# si nécessaire. Plutôt que de gérer des centaines ou des milliers de transitions, ou de connecter des transitions AnyState un peu partout, utilisez Animator.Play ou Animator.CrossFade pour créer dynamiquement des transitions directes à partir du code. Si cela ne vous suffit toujours pas, consultez l'API Playables de Unity pour découvrir d'autres façons d'animer à l'aide du code. Vous trouverez ici quelques exemples.

Animation Events associe un moment précis de votre clip d'animation à un changement d'état spécifique dans votre jeu. Ils peuvent être utilisés pour déclencher des éléments tels que des effets visuels et sonores. Cependant, si vous effectuez une transition hors d'un clip avant qu'il ne soit lancé, il ne se déclenchera jamais. Une façon de résoudre ce problème est d'ajouter un comportement de machine d'état qui garantit que l'événement se déclenche toujours lorsqu'un moment précis est atteint, quoi qu'il arrive (ou ne se passe pas) dans le jeu.