Animationsgraph-Editor

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Der Animationsgraph-Editor ist ein visuelles, node-basiertes Tool, das technischen Künstlern und Animatoren ermöglicht, komplexe Animationslogik direkt innerhalb von Roblox Studio zu erstellen. Durch die Bereitstellung einer optimierten Benutzeroberfläche zur Erstellung von Verhaltensweisen wie Blendbäumen wird die traditionelle Abhängigkeit von manueller Skripterstellung für die Charakterbewegung beseitigt.

Dieses System arbeitet Hand in Hand mit Ihrem bestehenden Animationsworkflow:

  • Animationseditor: Verwenden Sie weiterhin den Animationseditor als Ihr primäres Tool zum Erstellen einzelner Clips und zum Feinabstimmen von Keyframes und Kurven.
  • Animationsgraph-Editor: Verwenden Sie dieses Tool, um diese Clips zu organisieren und in einen Logikbaum zu integrieren, um anspruchsvolles Gameplay-Verhalten zu steuern.

Entwickelt, um die Zusammenarbeit zu verbessern, ermöglicht der visuelle Graph Entwicklern, die von Animatoren erstellte Logik schnell zu inspizieren, zu debuggen und zu verstehen. Während sich Künstler auf die Verfeinerung interaktiver Bewegungen konzentrieren, können Entwickler weiterhin programmgesteuert auf Animationsgraphknoten zugreifen, um direkte Kontrolle über gemischte Animationen und Zustände zu haben.

Erstellen eines Graphen

Um mit dem Erstellen von Logik für einen animierbaren Charakter zu beginnen, greifen Sie über die Registerkarte Avatar im Studio-Ribbon auf den Animationsgraph-Editor zu. Die folgenden Schritte zeigen, wie Sie ein Rig initialisieren und ein grundlegendes Knotennetzwerk mit den Standardanimationen für Gehen und Winken erstellen.

Für einen tieferen Einblick in praktische Anwendungen können Sie die Animationsgraph-Referenzdatei erkunden, die sowohl grundlegende als auch komplexe Implementierungsbeispiele enthält.

Um Ihren eigenen Animationsgraph zu erstellen, ähnlich dem im Referenzdokument bereitgestellten einfachen Beispiel, verwenden Sie die folgenden Schritte:

  1. Fügen Sie im Studio ein animierbares Rig hinzu, indem Sie zur Registerkarte Avatar navigieren und Charakter ⟩ Mein Avatar auswählen.

    Charakter-Button in der Symbolleiste von Studio hervorgehoben.
  2. Öffnen Sie den Animationsgraph-Editor, indem Sie zu Graph-Editor in der Registerkarte Avatar navigieren.

    Animationsgraph-Editor in der Symbolleiste von Studio angezeigt.
  3. Wählen Sie das animierbare Rig im 3D-Viewport aus. Wählen Sie im Graph-Editor-Bereich Graph in der oberen linken Ecke und wählen Sie Neu, um einen neuen Graphen zu erstellen.

  4. Klicken Sie im Graph-Editor mit der rechten Maustaste und wählen Sie Knoten einfügen ⟩ Clip.

    Liste der Knoten in einem Kontextmenü
  5. Setzen Sie in dem neuen Clip-Knoten die Animations-ID.

    1. Wählen Sie das Dropdown-Menü Animations-ID aus.

    2. Um eine spezifische Animations-Asset-ID einzureichen, klicken Sie auf Importieren.

      Ein Feld im Animationsimportmodul zur Hinzufügung der Animations-ID angezeigt
    3. Fügen Sie im Feld Animations-ID die Standard-Walk-Animation hinzu: 507777826.

    4. Wählen Sie Importieren.

  6. Fügen Sie einen weiteren Clip-Knoten hinzu, indem Sie die Schritte 4-5 mit der Standard-Wave-Animation: 507770239 wiederholen.

    Zwei Clip-Knoten mit einer ausgefüllten Animations-ID
  7. Klicken Sie im Graph-Editor mit der rechten Maustaste und wählen Sie Hinzufügen.

    Knoten hinzufügen
  8. Verbinden Sie die Clip-Knoten mit dem Hinzufügen-Knoten, indem Sie den oberen rechten Ausgangsstecker zum entsprechenden Port ziehen:

    1. Verbinden Sie den Clip-Knoten mit der Gehen-Animation mit dem Basis-Port.
    2. Verbinden Sie den Clip-Knoten mit der Winken-Animation mit dem Additive-Port.
    Beide Clip-Knoten mit dem Hinzufügen-Knoten verbunden
  9. Verbinden Sie vom Hinzufügen-Knoten den oberen rechten Ausgangsstecker mit dem Graph-Ausgabe-Pose-Port.

    Alle Knoten mit einem endgültigen Ausgabeknoten verbunden
  10. OPTIONAL
    Weisen Sie eine Parameter zu Ihrer Speed-Variablen zu.

    1. Klicken und ziehen Sie den grünen Speed-Port in einen leeren Bereich. Ein neuer Parameterknoten wird angezeigt.

      Klicken und Ziehen des Steckers vom Speed-Port des Clip-Knotens.
    2. Verwenden Sie in der oberen linken Ecke des Graph-Editors das Parameterfenster, um Parameter in Ihren Knoten schnell zu ändern. Sie können auch programmgesteuert darauf zugreifen.

      Parameterfenster, Parameterknoten und Clip-Knoten, die gemeinsame Werte anzeigen.
  11. Testen Sie die Animation, indem Sie auf die Play-Taste drücken.

    Play-Button-Symbol zum Vorschauen von Animationen
  12. Versuchen Sie, verschiedene Gewichte, Geschwindigkeiten, Wiedergabemodi und andere Animationen zu testen. Weitere Informationen zu einzelnen Knoten finden Sie in der Knotenreferenz.

API-Integration

Das Erstellen und Bereitstellen eines Animationsgraphen folgt dem Standard-Animationspipeline von Roblox. Nachdem Sie ein Rig im Animationsgraph-Editor ausgewählt haben, wird ein neues AnimationGraphDefinition-Asset erstellt. Dieses Asset dient als Container für Ihre Knoten, Verbindungen und Parameter. Sobald Ihre Logik abgeschlossen ist, veröffentlichen Sie den Graphen, um eine Standard-Asset-ID zu erhalten.

In Ihren Skripten interagieren Sie mit diesen Graphen, indem Sie sie auf einen Animator laden, wie Sie es mit einer traditionellen Animation tun würden. Um die interne Logik des Graphen zu steuern, verwenden Sie AnimationTrack:SetParameter(), um Echtzeitwerte – wie Bewegungsgeschwindigkeit oder Zustandsbooleans – direkt in die Variablen des Graphen zu übergeben.

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- Ihre veröffentlichte Graph-ID
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- Dynamische Parameteraktualisierungen über RunService
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)

Knotenreferenz

Globale Ereignisregeln

Für alle Knoten und Übergänge gelten standardmäßig die folgenden Regeln:

  • Ereignisse propagieren sich von ihrem Quellknoten durch den Graphen nach oben. Jedes Ereignis trägt ein Gewicht, das den Einfluss seiner Quelle auf die endgültige Mischung darstellt. Wenn das Gewicht an irgendeinem Punkt null erreicht, wird das Ereignis stummgeschaltet.
  • Knoten ohne benutzerdefinierte Ereignislogik geben alle Ereignisse unverändert weiter; Knoten, die zwischen Eingaben mischen oder auswählen, können das Gewicht skalieren oder Ereignisse von nicht primären Eingaben blockieren (siehe Abschnitt Ereignis pro Knoten).
  • Markerereignisse, die die Spitze des Graphen erreichen, können über AnimationTrack:GetMarkerReachedSignal() beobachtet werden.

Übergänge

Mehrere Knoten im Animationsgraph (wie Select, Priority Select, Sequence und Random Sequence) steuern, wie Animationen beim Wechsel zwischen aktiven Eingaben gemischt werden. Um Redundanz in der Knotenreferenz zu vermeiden, werden diese Verhaltensweisen durch standardisierte Übergangseigenschaftsgruppen definiert.

Standardübergang

Standardübergang

Das grundlegende Mischverhalten, das auf den Knoten angewendet wird, wann immer er zu einer neuen aktiven Eingabe wechselt.

Übergangsüberschreibung

Übergangsüberschreibung

Eingabespezifische Verknüpfungseigenschaften, die den Standardübergang überschreiben. Dauer- und Kurvenüberschreibungen gelten, wenn der Knoten zu dieser Eingabe wechselt, mit Ausnahme von BeforeFinished-Übergängen, die die Überschreibungen der ausgehenden Eingabe verwenden.

Übergangszeit

Für Sequenzknotentypen steuern die folgenden Einstellungen, wann die Sequenz zur nächsten Eingabe übergeht:

  • WaitFor (Enum.AnimationNodeWaitFor): Legt die Bedingung für den Übergang fest. Verwenden Sie Enum.AnimationNodeWaitFor|Finished (Standard), um auf das Ende der aktuellen Eingabe oder den Abschluss einer Schleife zu warten, oder Enum.AnimationNodeWaitFor|Trigger, um voranzuschreiten, wenn WaitForTrigger true ist. Setzen Sie den Knotenebene-Standard mit DefaultWaitFor oder überschreiben Sie ihn für eine Eingabe mit TransitionOverrideWaitFor.
    • When (Enum.AnimationNodeTransitionWhen): Gilt, wenn Wait For Enum.AnimationNodeWaitFor|Finished ist. Setzen Sie den Knotenebene-Standard mit DefaultTransitionWhen oder überschreiben Sie ihn für die ausgehende Eingabe mit TransitionOverrideWhen.
      • Enum.AnimationNodeTransitionWhen|Finished (Standard): Beginnt mit dem Mischen, nachdem die aktuelle Eingabe abgeschlossen ist.
      • Enum.AnimationNodeTransitionWhen|BeforeFinished: Beginnt mit dem Mischen eine Übergangszeit, bevor die aktuelle Eingabe endet, sodass die Mischung das Ende ihrer Animation überlappt. Zum Beispiel beginnt eine 0,2-sekündige Übergang während der letzten 0,2 Sekunden der Animation.

RandomSequenceNode unterstützt ebenfalls DefaultTransitionWhen und TransitionOverrideWhen, um zu steuern, wann das Mischen beginnt.

Für Zustandsmaschinenübergänge siehe Übergangseigenschaften.

Replikation

Animationsgraphparameter und interner Knotenstatus replizieren sich automatisch. Der Replikationsmodus wird durch Workspace.AuthorityMode zum Zeitpunkt der Erstellung des Animate-Skripts bestimmt:

Beispiel Animate-Skripte

Um Beispielskripte zu generieren, die einen Animationsgraph für ein Rig steuern, verwenden Sie Graph -> Animate-Skript erstellen im Animationsgraph-Editor. Dies erzeugt eine Skripthierarchie, die unter StarterCharacterScripts (für Spielercharaktere) oder direkt auf dem Rig (für NPCs) platziert wird:

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

Das Animate ModuleScript enthält die Logik zum Laden des Graphen. Die RunClient- und RunServer-Skripte rufen es im entsprechenden Kontext auf. Welche Skripte enthalten sind, hängt vom Anwendungsfall ab:

AnwendungsfallEnthaltene SkripteVerhalten
NPC (irgendein Modus)RunServerDer Server lädt und spielt den Graphen. Der Zustand repliziert sich automatisch zu allen Clients.
Spieler + Enum.AuthorityMode.ServerRunServer + RunClientDer Server steuert den Graphen autoritativ. Der besitzende Client aktiviert Enum.PredictionMode für rollback-basierte lokale Vorhersage.
Spieler + Enum.AuthorityMode.AutomaticRunClientDer besitzende Client lädt und spielt den Graphen. Parameter replizieren sich automatisch zum Server und zu anderen Clients.

Die folgenden Attribute werden im Animate-Skript gespeichert und konfigurieren dessen Verhalten:

AttributTypBeschreibung
GraphNameStringName des Animationsgraph-Assets.
CharacterNameStringName des Rigs, auf das der Graph abzielt.
SourceAssetIdStringDie veröffentlichte Asset-ID des Graphen. Wird zur Laufzeit in veröffentlichten Spielen verwendet.
IsServerAuthorityBooleanOb das Skript mit Workspace.AuthorityMode auf Server gesetzt wurde. Bestimmt die Replikationsstrategie.
PreviewInStudioBooleanWenn wahr (Standard), lädt das Studio-Playtesting den unveröffentlichten Graphen lokal, sodass Sie iterieren können, ohne zu veröffentlichen. Setzen Sie es auf falsch, um das veröffentlichte Asset im Studio zu testen. Beachten Sie, dass dies derzeit in Enum.AuthorityMode.Server nicht unterstützt wird.

Parameterreplikation im automatischen Modus

Wenn Workspace.AuthorityMode Automatisch ist:

  • Der besitzende Client steuert die Graphen der Spielercharaktere; der Server steuert die Graphen der NPCs.
  • Parameter, die über AnimationTrack:SetParameter() festgelegt werden, werden automatisch zu anderen Peers repliziert. Mehrere SetParameter-Aufrufe innerhalb eines einzelnen Frames werden zusammengefasst (last-writer-wins).
  • Es sind keine zusätzlichen Skripte für den Parametertransport erforderlich – die Engine übernimmt die Replikation intern.
  • Andere Clients sehen Parameteraktualisierungen mit einer kleinen Verzögerung (ein Sendintervall plus Netzwerkverzögerung).

Serverautorität

Wenn Workspace.AuthorityMode Server ist:

  • Der Server ist autoritär für alle Graphen – er führt die Simulation aus und repliziert den vollständigen Graphstatus.
  • Was repliziert wird: Sowohl Parameter als auch interner Knotenstatus, einschließlich verstrichener Zeit, aktueller Auswahlen, Übergangsfortschritt, Schleifenzähler und RNG-Seed. Dies stellt sicher, dass alle Clients identisches Animationsverhalten sehen.
  • Spielercharaktere: Der Server steuert den Graphen. Das RunClient-Skript des besitzenden Clients aktiviert automatisch Enum.PredictionMode auf dem Animator, sodass der lokale Spieler eine reibungslose, vorhergesagte Animation sieht, die mit dem Server bei Abweichungen abgeglichen wird.
  • NPCs: Der Server steuert den Graphen ausschließlich; Clients beobachten den replizierten Zustand ohne lokale Simulation.

Parameter steuern

Verwenden Sie AnimationTrack:SetParameter() aus jedem Skript, das den Graphen ausführt:

  • NPC (irgendein Modus): Rufen Sie SetParameter aus RunServer (oder einem beliebigen Server-Script mit Zugriff auf den AnimationTrack) auf.
  • Spielercharakter im Enum.AuthorityMode.Server: Rufen Sie SetParameter aus beiden RunServer und RunClient auf. Der Server benötigt Parameter, um die autoritative Simulation zu steuern, und der besitzende Client benötigt dieselben Parameter, um seine lokale Vorhersage zu steuern.
  • Spielercharakter im Enum.AuthorityMode.Automatic: Rufen Sie SetParameter aus RunClient (oder einem beliebigen Client-LocalScript mit Zugriff auf den AnimationTrack) auf.

Das generierte Animate-Skript enthält einen auskommentierten SetParameter-Block als Ausgangspunkt. Kommentieren Sie ihn aus und ändern Sie ihn, um Parameter aus dem Gameplay-Zustand (Bewegungsgeschwindigkeit, Humanoid-Zustand, Eingabedirection usw.) zu steuern.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.