Éditeur de Graphique d'Animation

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

L'Éditeur de Graphique d'Animation est un outil visuel basé sur des nœuds qui permet aux artistes techniques et aux animateurs de construire une logique d'animation complexe directement dans Roblox Studio. En fournissant une interface simplifiée pour créer des comportements comme des arbres de mélange, il élimine la dépendance traditionnelle à la scriptation manuelle pour le mouvement des personnages.

Ce système fonctionne en tandem avec votre flux de travail d'animation existant :

  • Éditeur d'Animation : Continuez à utiliser l'Éditeur d'Animation comme votre outil principal pour créer des clips individuels et peaufiner les images clés et les courbes.
  • Éditeur de Graphique d'Animation : Utilisez cet outil pour prendre ces clips et les organiser dans un arbre logique pour piloter un comportement de jeu sophistiqué.

Conçu pour améliorer la collaboration, le graphique visuel permet aux développeurs d'inspecter, de déboguer et de comprendre rapidement la logique créée par les animateurs. Pendant que les artistes se concentrent sur le raffinement du mouvement interactif, les développeurs peuvent toujours accéder aux nœuds du graphique d'animation de manière programmatique pour un contrôle direct sur les animations et états mélangés.

Construire un graphique


Pour commencer à construire la logique pour un personnage animable, accédez à l'éditeur de graphique d'animation via l'onglet Avatar dans le ruban Studio. Les étapes suivantes montrent comment initialiser un rig et construire un réseau de nœuds de base en utilisant les animations de marche et de salutation par défaut.

Pour une plongée plus profonde dans les applications pratiques, vous pouvez explorer le Fichier de Référence du Graphique d'Animation, qui contient à la fois des exemples d'implémentation fondamentaux et complexes.

Pour créer votre propre graphique d'animation, similaire à l'exemple de base fourni dans la référence, utilisez les étapes suivantes :

  1. Dans Studio, ajoutez un rig animable en naviguant vers l'onglet Avatar et en sélectionnant PersonnageMon Avatar.

    Bouton Personnage mis en surbrillance dans la barre d'outils de Studio.
  2. Ouvrez l'Éditeur de Graphique d'Animation en naviguant vers Éditeur de Graphique dans l'onglet Avatar.

    Éditeur de Graphique d'Animation indiqué dans la barre d'outils de Studio.
  3. Sélectionnez le rig animable dans la vue 3D et sélectionnez Créer Graphique.

  4. Dans l'Éditeur de Graphique, faites un clic droit et sélectionnez Clip.

    Liste des nœuds dans un menu contextuel
  5. Dans le nouveau nœud Clip, définissez l'ID d'Animation.

    1. Sélectionnez le menu déroulant ID d'Animation.

    2. Pour soumettre un ID d'actif d'animation spécifique, cliquez sur Importer.

      Indiqué un champ sur le module d'importation d'animation pour ajouter l'ID d'Animation
    3. Dans le champ ID d'Animation, ajoutez l'animation de marche par défaut : 507777826.

    4. Sélectionnez Importer.

  6. Ajoutez un autre nœud clip en répétant les étapes 4-5 en utilisant l'animation de salutation par défaut : 507770239.

    Deux nœuds clip avec un ID d'Animation peuplé
  7. Dans l'Éditeur de Graphique, faites un clic droit et sélectionnez Ajouter.

    Ajouter un nœud
  8. Connectez les nœuds Clip au nœud Ajouter en faisant glisser le connecteur de sortie en haut à droite vers le port approprié :

    1. Connectez le nœud Clip avec l'animation de marche au port Base.
    2. Connectez le nœud Clip avec l'animation de salutation au port Additive.
    Les deux nœuds clip attachés au nœud ajouter
  9. Depuis le nœud Ajouter, connectez le connecteur de sortie en haut à droite au port de sortie du graphique Pose.

    Tous les nœuds connectés à un nœud de sortie final
  10. OPTIONNEL
    Assignez un paramètre à votre variable Vitesse.

    1. Cliquez et faites glisser le port de Vitesse vert vers une zone vide. Un nouveau nœud de paramètre s'affiche.

      Cliquer et faire glisser le connecteur depuis le port de Vitesse du nœud Clip.
    2. En haut à gauche de l'éditeur de graphique, utilisez le panneau de paramètres pour modifier rapidement les paramètres dans vos nœuds. Vous pouvez également y accéder de manière programmatique.

      Panneau de paramètres, nœud de paramètre et nœud clip montrant des valeurs partagées.
  11. Testez l'animation en appuyant sur le bouton de lecture.

    Icône du bouton de lecture pour prévisualiser les animations
  12. Essayez de tester divers poids, vitesses, modes de lecture et autres animations. Pour plus d'informations sur les nœuds individuels, consultez la référence des nœuds.

Intégration API

Créer et déployer un Graphique d'Animation suit le pipeline d'animation standard de Roblox. Après avoir sélectionné un rig dans l'Éditeur de Graphique d'Animation, un nouvel actif AnimationGraphDefinition est créé. Cet actif sert de conteneur pour vos nœuds, connexions et paramètres. Une fois votre logique finalisée, vous publiez le graphique pour recevoir un ID d'Actif standard.

Dans vos scripts, vous interagissez avec ces graphiques en les chargeant sur un Animator comme vous le feriez avec une animation traditionnelle. Pour piloter la logique interne du graphique, utilisez AnimationTrack:SetParameter() pour passer des valeurs en temps réel—comme la vitesse de mouvement ou des booléens d'état—directement dans les variables du graphique.

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- Votre ID de Graphique Publié
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- Mises à jour dynamiques des paramètres via RunService
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)

Référence des nœuds

Chaque nœud de graphique d'animation sert de porte logique ou de source de données qui traite les données d'animation avant qu'elles n'atteignent le rig du personnage. Cette section fournit une analyse technique des blocs fonctionnels au sein de l'Éditeur de Graphique d'Animation. Tous les nœuds produisent actuellement une pose d'animation.

Chaque section de nœud comprend :

  • Définition – Un résumé de l'objectif et du rôle du nœud au sein du graphique.
  • Entrées – Les flux de données entrant dans le nœud. Plusieurs entrées sont représentées comme Input1, Input2, ..., InputN.
  • Propriétés d'entrée – Paramètres directement liés à une entrée spécifique (une entrée Idle assignée à une Position de 0.5 sur un nœud Blend1D).
  • Données d'événement – Événements émis ou consommés par le nœud pour déclencher la logique interne du graphique ou des scripts Luau externes. Ce comportement peut changer au cours du développement bêta.

Règles d'événements globaux

Pour tous les nœuds et transitions, les règles suivantes s'appliquent par défaut :

  • Les événements se propagent vers le haut depuis leur nœud source à travers le graphique. Chaque événement porte un poids représentant l'influence de sa source dans le mélange final. Si le poids atteint zéro à un moment donné, l'événement est silencieux.
  • Les nœuds sans logique d'événement personnalisée passent tous les événements sans changement ; les nœuds qui mélangent ou sélectionnent entre les entrées peuvent réduire le poids ou bloquer les événements des entrées non primaires (voir la section Événement par nœud).
  • Les événements marqueurs qui atteignent le sommet du graphique peuvent être observés via AnimationTrack:GetMarkerReachedSignal().

Clip

Nœud Clip

Une référence à un actif AnimationClip. Cela sert de nœud feuille dans le graphique, générant les données d'animation brutes qui alimentent d'autres nœuds pour le mélange, la sélection ou la modification.

Entrées
  • Aucune
Propriétés
PropriétéTypeDescription
AnimationIdStringL'actif d'animation à jouer (par exemple, rbxassetid://12345).
PlayModeEnum.AnimationNodePlayMode

Définit le comportement du clip une fois qu'il atteint la fin de sa durée.

  • Boucle (par défaut) : Redémarre automatiquement depuis le début une fois le clip terminé.
  • PingPong : Joue du début à la fin, puis joue immédiatement à l'envers du fin au début.
  • Une fois et Maintenir : Joue une fois et maintient la pose finale à la fin.
  • Une fois et Réinitialiser : Joue une fois et revient à la pose de départ initiale à la fin.
ReverseBooleanContrôle la direction de la lecture.
SpeedNumberUn multiplicateur pour le taux de lecture. 0.0 met le graphique en pause, 1.0 est la vitesse normale, et 2.0 est la double vitesse.
TrimBooleanActive ou désactive si la durée du clip doit être tronquée.
TrimStartNumberLe timestamp absolu (en secondes) où la lecture doit commencer.
TrimEndNumberLe timestamp absolu (en secondes) où la lecture doit se terminer.
Données d'événement
  • Gestion des événements : Aucune. C'est un nœud feuille sans enfants.
  • Émission d'événements : Lit des marqueurs personnalisés intégrés dans le clip d'animation (par exemple, "Pas", "Balancement d'Arme") et les émet en tant qu'événements nommés au cadre précis où ils se produisent. Si le clip est tronqué, seuls les marqueurs dans l'intervalle défini [TrimStart, TrimEnd] (inclus) sont émis.

Select

Nœud Select

Sélectionne entre n'importe quel nombre d'entrées via la propriété Sélection. Chaque fois que la sélection actuelle change, cela déclenche une nouvelle transition.

Entrées
  • Input1...InputN
Propriétés
PropriétéTypeDescription
SelectionStringL'ID unique de l'entrée à sélectionner, correspondant au nom de la connexion d'entrée (par exemple, "Marche").
Données d'événement
  • Gestion des événements : Les événements de l'entrée actuellement sélectionnée passent avec leur poids inchangé.
  • Émission d'événements : Passe tous les événements de l'entrée actuellement sélectionnée uniquement. Pendant une transition, l'émission d'événements suit les règles d'événements globaux.

PrioritySelect

Nœud Priority Select

Évalue une liste d'entrées connectées de haut en bas et joue la première dont la condition est évaluée à vrai. Cela permet une sélection d'animation hiérarchique basée sur une logique spécifique. Chaque fois que la sélection actuelle change, cela déclenche une nouvelle transition.

Entrées
  • Input1...InputN
    • Trigger (Boolean) : Une condition logique qui doit être vraie pour que cette entrée s'active. Dans les versions actuelles, cela est relié à un paramètre booléen.
    • TransitionOverrideInterruptible (Enum.AnimationNodeInterruptible) : Définit la règle pour quand cette animation active peut être interrompue par une entrée de priorité supérieure. Remplace le paramètre DefaultInterruptible au niveau du nœud.
      • Toujours (par défaut) : L'entrée peut être interrompue à tout moment par une condition de priorité supérieure.
      • Terminé : L'animation actuelle doit terminer sa lecture avant qu'une entrée de priorité supérieure puisse prendre le relais.
      • Trigger : L'entrée n'est interrompable que lorsque le InterruptibleTrigger est défini sur vrai.
    • InterruptibleTrigger (Boolean) : Disponible uniquement si TransitionOverrideInterruptible est défini sur Trigger. L'entrée peut être interrompue lorsque cette expression spécifique est vraie.
Propriétés
PropriétéTypeDescription
DefaultInterruptibleEnum.AnimationNodeInterruptibleLa règle d'interruption de base appliquée à toutes les entrées. Chaque entrée peut remplacer cela avec sa propre propriété d'entrée TransitionOverrideInterruptible.
Données d'événement
  • Gestion des événements : Les événements de l'entrée actuellement sélectionnée passent avec leur poids inchangé.
  • Émission d'événements : Passe tous les événements de l'entrée actuellement sélectionnée uniquement. Pendant une transition, l'émission d'événements suit les règles d'événements globaux.

Sequence

Nœud Sequence

Active les entrées connectées dans un ordre séquentiel spécifique basé sur des conditions d'attente définies. Chaque fois que la sélection actuelle change, cela déclenche une nouvelle transition.

Entrées
  • Input1...InputN
    • TransitionOverrideWaitFor (Enum.AnimationNodeWaitFor) : Spécifie la condition qui doit être remplie avant que la séquence avance à l'entrée suivante. Remplace le paramètre DefaultWaitFor au niveau du nœud.
      • Terminé (par défaut) : Avance à l'entrée suivante lorsque l'entrée actuelle termine un cycle. Le comportement d'avancement dépend de l'entrée connectée :
        • Clip à jouer une fois : Avance lorsque le clip se termine.
        • Clip en boucle : Avance après qu'une boucle complète soit terminée.
        • Séquence avec boucles infinies : Avance après un cycle complet à travers toutes les entrées.
        • Séquence avec boucles finies : Avance après que toutes les boucles soient terminées.
      • Trigger : Active l'entrée suivante lorsque une expression logique personnalisée est évaluée à vrai.
    • WaitForTrigger (Boolean) : Disponible uniquement lorsque TransitionOverrideWaitFor est défini sur Trigger.
Propriétés
PropriétéTypeDescription
LoopCountNumberLe nombre de fois à parcourir l'ensemble de la séquence. Une valeur de 0 (par défaut) indique une boucle infinie. Une fois le compte atteint, le nœud respecte le paramètre de boucle ou de maintien de la dernière entrée.
DefaultWaitForEnum.AnimationNodeWaitForLa condition d'attente de base appliquée à toutes les entrées. Chaque entrée peut remplacer cela avec sa propre propriété d'entrée TransitionOverrideWaitFor.
Données d'événement
  • Gestion des événements : Les événements de l'entrée actuellement active passent avec leur poids inchangé.
  • Émission d'événements : Passe tous les événements de l'entrée actuellement active dans la séquence uniquement. Pendant une transition, l'émission d'événements suit les règles d'événements globaux.

RandomSequence

Nœud Random Sequence

Sélectionne et joue l'une de ses entrées connectées au hasard. Lorsque l'animation actuellement sélectionnée se termine, le nœud choisit aléatoirement une autre entrée à jouer. Assignez à chaque entrée un poids spécifique pour influencer la probabilité de son choix. Chaque fois que la sélection actuelle change, cela déclenche une nouvelle transition.

Entrées
  • Input1...InputN
    • Weight (Number) : Détermine la probabilité de cette entrée étant sélectionnée ; des poids plus élevés augmentent la chance de sélection.
Propriétés
PropriétéTypeDescription
PlayCountNumberLe nombre d'entrées que le nœud jouera avant de s'arrêter. Une fois atteint, le nœud respecte le paramètre de boucle ou de maintien de la dernière entrée. Par défaut, c'est 0 pour infini.
SeedNumberUne valeur utilisée pour initialiser le Générateur de Nombres Aléatoires (RNG), garantissant que la séquence reste cohérente à travers différents clients. Par défaut, c'est -1 pour une graine aléatoire.
Données d'événement
  • Gestion des événements : Les événements de l'entrée actuellement active passent avec leur poids inchangé.
  • Émission d'événements : Passe tous les événements de l'entrée actuellement active dans la séquence uniquement. Pendant une transition, l'émission d'événements suit les règles d'événements globaux.

Over

Nœud Over

Superpose la pose Over sur la pose de Base. Lorsqu'elle est combinée avec un nœud Masque, les articulations masquées dans la pose Over révèlent entièrement la pose Base, créant un effet de superposition transparent.

Entrées
  • Base : La couche d'arrière-plan ou inférieure, typiquement une animation de corps entier comme locomotion ou un état d'inactivité.
  • Over : La couche de premier plan ou supérieure à appliquer sur la base, comme un geste de main ou une animation d'utilisation d'outil.
Propriétés
PropriétéTypeDescription
WeightNumberLe poids de mélange utilisé pour atténuer la pose Over. Par défaut, c'est 1.0 (override complet) et n'est pas limité.
Données d'événement
  • Gestion des événements :
    • Le nœud écoute les événements des entrées Base et Over.
  • Émission d'événements :
    • Événements de Base : Tous les événements de l'entrée de Base sont passés sans modification.
    • Événements de Over : Les événements de l'entrée Over sont mis à l'échelle par la propriété Poids.
      • À Poids 0.5, les événements Over se propagent à moitié poids.
      • À Poids 0, ils sont silencieux.

Add

Nœud Add

Ajoute la pose Additive à la pose Base, atténuée par un Poids spécifique (non limité).

Entrées
  • Base : La pose d'animation principale.
  • Additive : La pose à superposer à la base.
Propriétés
PropriétéTypeDescription
WeightNumberDétermine la force de la pose additive appliquée à la base.
Données d'événement
  • Gestion des événements : Le nœud écoute les événements des entrées Base et Additive.
  • Émission d'événements : Tous les événements des entrées Base et Additive sont passés sans modification.

Subtract

Nœud Subtract

Convertit une animation en une pose additive en soustrayant une pose de base relative de la pose cible (AWeight×BA - \text{Weight} \times B). Le Poids met à l'échelle la pose B avant la soustraction (non limitée).

Entrées
  • A : La pose d'animation cible.
  • B : La pose de base relative à soustraire.
Propriétés
PropriétéTypeDescription
WeightNumberMet à l'échelle la pose B avant qu'elle ne soit soustraite de A. À 1.0 (par défaut), B est entièrement soustraite ; à 0.0, aucune soustraction n'a lieu.
Données d'événement
  • Gestion des événements : Le nœud écoute les événements des deux Input A et Input B.
  • Émission d'événements : Tous les événements des deux Input A et Input B sont passés sans modification.

Blend1D

Nœud Blend1D

Interpole linéairement entre les deux poses d'animation les plus proches de la position d'entrée actuelle sur un seul axe.

Entrées
  • Input1...InputN
    • Position (Number) : La coordonnée spécifique pour chaque entrée suivante sur l'axe de mélange.
Propriétés
PropriétéTypeDescription
PositionNumberLa valeur active actuelle sur l'axe de mélange utilisée pour échantillonner les animations. Si Position est en dehors de la plage des positions d'entrée définies, le nœud extrapole en utilisant les deux entrées les plus proches.
PhaseSyncEnum.AnimationNodePhaseSync

Configure si le timing des entrées enfants doit être synchronisé.

  • Synchronisé (par défaut) : Synchronisation normalisée. Le nœud calcule une "durée virtuelle" basée sur la moyenne pondérée des entrées actives. Chaque étape de temps du nœud d'entrée est ajustée pour que tous les enfants convergent vers la même phase, maintenant les animations de différentes longueurs en synchronisation.
  • Non synchronisé : Mélange standard où les clips avancent indépendamment à leurs propres taux de lecture.
Données d'événement
  • Gestion des événements : Le nœud écoute les événements de tous les nœuds enfants actuellement actifs.
  • Émission d'événements : Seuls les événements de l'entrée active à poids le plus élevé se propagent, mis à l'échelle par son poids de mélange. Les événements de l'entrée secondaire sont silencieux.

Blend2D

Nœud Blend2D

Mélange plusieurs poses d'animation ensemble en fonction de deux paramètres d'entrée dans un espace de coordonnées 2D. Cela généralise le nœud Blend1D pour gérer des scénarios complexes, tels que le mélange basé à la fois sur la direction de mouvement et la vitesse simultanément.

Entrées
  • Input1...InputN
    • X (Number) : La coordonnée X pour chaque entrée suivante.
    • Y (Number) : La coordonnée Y pour chaque entrée suivante.
Propriétés
PropriétéTypeDescription
InputModeEnum.AnimationNodeBlend2DInputMode

Définit le système de coordonnées utilisé pour évaluer l'espace de mélange :

  • Cartésien (par défaut) : Utilise des coordonnées de grille 2D standard. X et Y représentent la position actuelle dans l'espace de mélange.
  • Polaire : Utilise des valeurs angulaires et de magnitude. X représente la direction en radians, tandis que Y représente la magnitude ou la force de mouvement. La direction est pondérée plus lourdement que la magnitude, donc les entrées à des angles similaires mais à des magnitudes différentes se mélangent plus harmonieusement que les entrées à des angles différents.
XNumberLa coordonnée X actuelle (cartésienne) ou Direction en radians (polaire).
YNumberLa coordonnée Y actuelle (cartésienne) ou Magnitude (polaire).
PhaseSyncEnum.AnimationNodePhaseSync

Configure si le timing des entrées enfants doit être synchronisé.

  • Synchronisé (par défaut) : Synchronisation normalisée. Le nœud calcule une "durée virtuelle" basée sur la moyenne pondérée des entrées actives. Chaque étape de temps du nœud d'entrée est ajustée pour que tous les enfants convergent vers la même phase, maintenant les animations de différentes longueurs en synchronisation.
  • Non synchronisé : Mélange standard où les clips avancent indépendamment à leurs propres taux de lecture.
Données d'événement
  • Gestion des événements : Le nœud écoute les événements de tous les nœuds enfants actuellement actifs.
  • Émission d'événements : Seuls les événements de l'entrée active à poids le plus élevé se propagent, mis à l'échelle par son poids de mélange. Les événements de l'entrée secondaire sont silencieux.

Mask

Nœud Mask

Applique un masque prédéfini à la pose d'entrée. Un masque est défini par un poids par objet (par exemple, articulation) dans la hiérarchie du rig, permettant un contrôle précis ou un "flou" de l'animation.

Entrées
  • Pose : La pose d'animation à masquer.
Propriétés
PropriétéTypeDescription
MaskObjectValue

Un ObjectValue (créé comme un enfant direct de la définition de nœud d'animation Mask) qui définit les poids de masque. Il peut fonctionner de deux manières :

  • Directement : Le ObjectValue lui-même contient des attributs mappant les noms d'objets du rig à des valeurs de poids spécifiques.
  • Par Référence : Le ObjectValue référence une autre Instance qui contient les attributs de mappage. Cela permet d'utiliser des masques partagés à travers différents nœuds dans le graphique.

Lors de la création d'un masque, vous pouvez choisir un schéma de rig (HumanoidRigDescription ou Picker) pour peupler la hiérarchie.

  • HumanoidRigDescription : Standardise le masque pour les personnages humanoïdes.
  • Picker : Permet à l'utilisateur de sélectionner un rig spécifique dans l'espace de travail pour peupler la hiérarchie du masque.
InvertBooleanLorsque vrai, applique les valeurs de poids comme 1 - poids. Cela permet de réutiliser un masque de manière inverse sans créer un nouvel actif.
Données d'événement
  • Gestion des événements : Le nœud écoute tous les événements de l'entrée Pose.
  • Émission d'événements : Tous les événements de l'entrée Pose sont passés sans modification.

Speed

Nœud Speed

Modifie le taux de lecture d'une pose d'animation entrante.

Entrées
  • Pose : La pose d'animation ou sous-graphique dont la vitesse de lecture sera modifiée.
Propriétés
PropriétéTypeDescription
SpeedNumberUn multiplicateur appliqué à l'intervalle de temps (dtdt). 0.0 met le graphique en pause, 1.0 est la vitesse normale, et 2.0 est la double vitesse.
Données d'événement
  • Gestion des événements : Le nœud écoute les événements de l'entrée Pose.
  • Émission d'événements : Tous les événements de l'entrée Pose sont passés sans modification. Notez que bien que la vitesse de lecture visuelle change, le timing des événements émis (tels que les marqueurs) sera mis à l'échelle en conséquence avec le taux de lecture modifié.

GraphOutput

Nœud GraphOutput

Représente la pose finale évaluée du graphique. Ce nœud est automatiquement inclus dans tous les nouveaux graphiques dans l'Éditeur de Graphique d'Animation. Sa présence garantit que le graphique est toujours valide et produit de manière cohérente une pose d'animation.

Entrées
  • Pose : Les données d'animation finales à appliquer au rig.
Propriétés
  • Aucune
Données d'événement
  • Gestion des événements : Le nœud écoute tous les événements passés par l'entrée connectée finale.
  • Émission d'événements : Ce nœud sert de point de sortie pour le pipeline d'animation et n'émet pas de signaux de retour dans le graphique.

Transitions

Plusieurs nœuds dans le Graphique d'Animation (comme Select, Priority Select, Sequence, et Random Sequence) gèrent comment les animations se mélangent lors du passage entre les entrées actives. Pour éviter la redondance dans la référence des nœuds, ces comportements sont définis par des groupes de propriétés de transition standardisés.

Transition par défaut

Transition par défaut

Le comportement de mélange de base appliqué au nœud chaque fois qu'il passe à une nouvelle entrée active.

Surcharge de transition

Propriétés de lien spécifiques à l'entrée qui remplacent la transition par défaut. Celles-ci sont appliquées lorsque le nœud passe à cette entrée spécifique.

Réplication

Les paramètres du graphique d'animation et l'état interne des nœuds se répliquent automatiquement. Le mode de réplication est déterminé par Workspace.AuthorityMode au moment où le script Animate est créé :

Exemples de Scripts Animate

Pour générer des scripts d'exemple pour piloter un graphique d'animation pour un rig, utilisez Graph -> Créer un script Animate dans l'Éditeur de Graphique d'Animation. Cela produit une hiérarchie de script placée sous StarterCharacterScripts (pour les personnages joueurs) ou directement sur le rig (pour les PNJ) :

Animate (ModuleScript)
├── RunClient (LocalScript)
└── RunServer (Script, RunContext = Legacy)

Le Animate ModuleScript contient la logique de chargement du graphique. Les scripts RunClient et RunServer l'invoquent dans le contexte approprié. Les scripts inclus dépendent du cas d'utilisation :

Cas d'utilisationScripts inclusComportement
PNJ (n'importe quel mode)RunServerLe serveur charge et joue le graphique. L'état se réplique automatiquement à tous les clients.
Joueur + Enum.AuthorityMode.ServerRunServer + RunClientLe serveur pilote le graphique de manière autoritaire. Le client propriétaire active Enum.PredictionMode pour la prédiction locale basée sur le rollback.
Joueur + Enum.AuthorityMode.AutomaticRunClientLe client propriétaire charge et joue le graphique. Les paramètres se répliquent automatiquement vers le serveur et d'autres clients.

Les attributs suivants sont stockés sur le script Animate et configurent son comportement :

AttributTypeDescription
GraphNameStringNom de l'actif de graphique d'animation.
CharacterNameStringNom du rig que le graphique cible.
SourceAssetIdStringL'ID d'Actif publié du graphique. Utilisé à l'exécution dans les jeux publiés.
IsServerAuthorityBooleanIndique si le script a été créé avec Workspace.AuthorityMode défini sur Server. Détermine la stratégie de réplication.
PreviewInStudioBooleanLorsque vrai (par défaut), le test de jeu dans Studio charge le graphique non publié localement afin que vous puissiez itérer sans publier. Définissez sur faux pour tester l'actif publié dans Studio. Notez que cela n'est actuellement pas pris en charge dans Enum.AuthorityMode.Server.

Réplication des paramètres en mode automatique

Lorsque Workspace.AuthorityMode est Automatique :

  • Le client propriétaire pilote les graphiques des personnages joueurs ; le serveur pilote les graphiques des PNJ.
  • Les paramètres définis via AnimationTrack:SetParameter() se répliquent automatiquement vers d'autres pairs. Plusieurs appels SetParameter dans une seule image sont coalisés (dernier écrivain gagne).
  • Aucun script supplémentaire n'est nécessaire pour le transport des paramètres — le moteur gère la réplication en interne.
  • D'autres clients voient les mises à jour des paramètres avec un léger retard (un intervalle d'envoi plus la latence réseau).

Autorité du serveur

Lorsque Workspace.AuthorityMode est Serveur :

  • Le serveur est autoritaire pour tous les graphiques — il exécute la simulation et réplique l'état complet du graphique.
  • Ce qui est répliqué : À la fois les paramètres et l'état interne des nœuds, y compris le temps écoulé, les sélections actuelles, la progression des transitions, les comptes de boucle et les graines RNG. Cela garantit que tous les clients voient un comportement d'animation identique.
  • Personnages joueurs : Le serveur pilote le graphique. Le script RunClient du client propriétaire active automatiquement Enum.PredictionMode sur le Animator, de sorte que le joueur local voit une animation fluide et prédite qui se réconcilie avec le serveur en cas de désaccord.
  • PNJ : Le serveur pilote exclusivement le graphique ; les clients observent l'état répliqué sans simulation locale.

Pilotage des paramètres

Utilisez AnimationTrack:SetParameter() depuis chaque script qui exécute le graphique :

  • PNJ (n'importe quel mode) : Appelez SetParameter depuis RunServer (ou tout Script serveur ayant accès au AnimationTrack).
  • Personnage joueur en Enum.AuthorityMode.Server : Appelez SetParameter depuis RunServer et RunClient. Le serveur a besoin de paramètres pour piloter la simulation autoritaire, et le client propriétaire a besoin des mêmes paramètres pour piloter sa prédiction locale.
  • Personnage joueur en Enum.AuthorityMode.Automatic : Appelez SetParameter depuis RunClient (ou tout LocalScript client ayant accès au AnimationTrack).

Le script Animate généré inclut un bloc SetParameter commenté comme point de départ. Décommentez et modifiez-le pour piloter les paramètres à partir de l'état de jeu (vitesse de mouvement, état humanoïde, direction d'entrée, etc.).

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.