Accueil Github ↗
Itération 3

Animations des personnages

AnimationController (swap d'AnimatorOverrideController), AnimationDatabase (registre), AnimationData (paires robot/avatar) et AnimationTag (filtre par intensité).

Le dossier Characters/Animation/ gère la lecture des animations pour le robot et l’avatar. Le même système alimente tous les modes de jeu (AP, APA, RC).

AnimationController

MonoBehaviour attaché à chaque personnage. Un seul champ à configurer dans l’inspecteur : characterType (Robot ou Avatar).

PlayAnimation(AnimationData anim) :

  1. Choisit l’AnimatorOverrideController selon le characterType.
  2. Remplace le contrôleur de l’Animator à la volée (runtimeAnimatorController).
  3. Appelle Play("Start") pour démarrer l’animation depuis le début.

Lève une exception si animationData est null, si le contrôleur robot/avatar n’est pas défini, ou si characterType est inconnu — intention explicite pour détecter les erreurs de configuration tôt.

AnimationData

ScriptableObject représentant une animation. Contient :

ChampDescription
animationNameNom lisible (affiché à l’écran pendant l’activité)
robotControllerAnimatorOverrideController pour le robot
avatarControllerAnimatorOverrideController pour l’avatar
tagsListe de AnimationTag pour le filtrage
audioClipInstruction vocale associée (ex. “Saute !”)

AnimationTag — système de filtrage

Enumération utilisée par les GameManagers pour sélectionner les animations appropriées au contexte.

TagSignification
APAAnimation de type APA (physique + cognitif)
APAnimation de type Pause Active
APMVActivité Physique Modérée à Vigoureuse (effort)
APLActivité Physique Légère (récupération)
SilencieuxMouvement sans bruit (pieds au sol)
RCRetour au calme

Les GameManagers filtrent la liste globale avec UserSettings.TagsApmv / TagsApl pour obtenir des sous-listes cohérentes, puis les mélangent avec l’algorithme Fisher-Yates.

AnimationDatabase

Singleton (AbstractSingleton) qui charge et garde en mémoire tous les AnimationData depuis Resources/. Les GameManagers appellent AnimationDatabase.GetAnimationsByTags(tags) plutôt que de chercher les assets directement.

Comportements d’idle

ScriptEmplacementRôle
IdleBehaviorAvatarAvatarAnime aléatoirement l’avatar quand il ne fait rien
BlinkAnimationAvatarAvatarClignement des yeux
YogaBehaviorAvatarAvatarÉtirements/yoga pendant les temps calmes
IdleMenuRobotAnimations d’attente du robot dans les menus
EmotionManagerRobotRobotCommute entre les états émotionnels (content, surpris, excité, triste)