Du kannst eine Kombination aus Proxy-, Proxy-Tables- und Chooser-Table-Assets verwenden, um dynamische Asset-Logik zu erstellen und Animationen in deinem Projekt basierend auf Variablen zu steuern. Beispielsweise kannst du Proxy-Assets und Proxy-Table-Assets verwenden, um auszuwählen, welche Art von Animationen für deinen Charakter geladen und verwendet werden sollen, z. B. verschiedene Waffensets. Alternativ kannst du Chooser-Tabellen verwenden, um mithilfe kontextbezogener Variablen aus deinem Projekt einzelne Animation-Assets dynamisch auszuwählen, z. B. verschiedene Trefferreaktionen basierend auf dem Bereich, an dem dein Charakter getroffen wird.
Im folgenden Dokument erfährst du mehr über die Einrichtung eines dynamischen Animationssystems in Unreal Engine.
Obwohl sich diese Dokumentation auf die Verwendung von Chooser- und Proxy-Tables konzentriert, um Animation-Assets wie Animationssequenzen, Montagen oder AnimInstance-Klassen auszuwählen, ist das System selbst generisch und kann für die Auswahl aller Arten von Assets, Objekten und Klassen verwendet werden.
Voraussetzungen
Aktiviere das Chooser-Plugin. Navigiere in der Menüleiste zu Edit > Plugins und suche im Abschnitt Animation nach Chooser, oder nutze alternativ die Suchleiste. Aktiviere das Plugin und starte den Editor neu.
Dein Projekt enthält einen Satz Animationen, die du basierend auf der kontextbezogenen Situation zur Laufzeit dynamisch auswählen möchtest. Das können einzigartige kosmetische Animationen sein, relevante Gameplay-Animationen wie kontextbezogene Animationssineros oder Animationen, die für ausrüstbare Gegenstände wie Waffen relevant sind.
Dein Projekt enthält einen funktionsfähigen Animationsblueprint, mit dem du eine dynamische Animationsauswahl-Logik erstellen kannst.
Ein Animationsauswahlsystem einrichten
Hier erfährst du, wie du in deinem Projekt ein Animationsauswahlsystem einrichten kannst, um die Wiedergabe von Trefferreaktionsanimationen während der Laufzeit dynamisch und kontextabhängig auszuwählen.
Proxy-Asset erstellen
Ein Proxy-Asset wird verwendet, um kontextbezogene Informationen darüber zu speichern, welches Proxy-Table-Asset aktiv ist, sowie andere relevante Variablen.
Um ein Proxy-Asset zu erstellen, nutze (+) Add im Inhaltsbrowser und gehe zu Miscellaneous > Proxy Asset.
Erstelle ein Proxy-Asset für jedes Animationset, aus dem du dynamisch Animationen auswählen möchtest, um den Charakter anzusteuern, etwa ein Idle-, Walk- oder Run-Set.
Nachdem du die Proxy-Assets erstellt hast, öffne jedes, um auf seine Einstellungen zuzugreifen.
Lege für jedes Proxy-Asset die Eigenschaft Type auf den verwendeten Animation-Asset-Typ fest, in diesem Fall AnimSequenceBase.
Setze die Eigenschaft Context Data auf die Option Animation Blueprint, indem du ein neues Index-Array mit (+) Add hinzufügst und die Option Context Object Type Class auswählst.
Erweitere die Einstellungen des Arrays Index und setze die Eigenschaft Class so, dass dein Animationsblueprint verwendet wird, in diesem Fall ABP_Manny. Achte dann darauf, dass die Eigenschaft Direction auf Read eingestellt ist.
Animationsblueprint-Einrichtung
Nachdem du dein Proxy-Asset eingerichtet hast, musst du eine Variable im Animationsblueprint deines Charakters erstellen, um die aktive Proxy-Table während der Laufzeit zu speichern. Um diese Variable zu erstellen, öffne den Animationsblueprint deines Charakters und erstelle mit (+) Add eine neue Variable im Panel My Blueprint. Setze dann den Variablentyp auf Proxy Table Object Reference. Nachdem du die Variable erstellt hast, speichere und kompiliere deinen Animationsblueprint mit save und compile.
Die Variable „Proxy Table“ wird in deinem Animationsdiagramm von einem „Evaluate Proxy“-Knoten verwendet, um die aktive Proxy-Table zur Laufzeit zu bestimmen.
Proxy-Table-Assets erstellen
Ein Proxy Table-Asset wird genutzt, um Animation-Asset-Sets zu speichern, die zur Laufzeit dynamisch ausgewählt werden können. Beispielsweise kann eine Proxy-Table die Idle-Animationen eines Charakters speichern, während eine andere seine Walking- oder Running-Animationen speichert.
Zum Erstellen eines Proxy-Table-Assets nutzt du (+) Add im Inhaltsbrowser und gehst zu Miscellaneous > Proxy Table.
Erstelle ein Proxy-Table-Asset für jede kontextbezogene Situation, für die eine andere Animation benötigt wird, etwa eine Animation für unbewaffnete Charaktere und eine für Charaktere, die eine Pistole oder ein Gewehr halten.
Nach dem Erstellen eines Proxy-Table-Asset musst du das Asset öffnen, um auf die Werte der Proxy-Table Zugang zu erhalten.
Füge in der ProxyTable einen Eintrag für jedes Proxy Asset hinzu, indem du (+) Add Row verwendest und das Asset auswählst. Du kannst dann das assoziierte Animation-Asset aus dem Set mithilfe der Wertespalte zuweisen.
Im folgenden Workflowbeispiel wird einem ProxyTable_Unarmed-Asset eine Unarmed_Idle- und Unarmed_Walk-Animation in den entsprechenden ProxyAsset_Idle- und ProxyAsset_Walk-Zeilen zugewiesen. In einem ProxyTable_Pistol-Asset werden dann dieselben Proxy-Asset-Zeilen mit einer Pistol_Idle- bzw. Pistol_Walk-Animation zugewiesen.
Die Spalte „Value“ kann auch eine Class-Referenz, ein Chooser Asset oder einen Lookup Proxy für dynamischere Animationsauswahlsysteme enthalten.
Proxy-Tables zur Laufzeit verwenden
Du kannst Proxy-Table-Assets zur Laufzeit mithilfe einer Animation-Node-Funktion auf einem Sequence-Player-Knoten verwenden. Wähle den Sequence-Player-Knoten aus und füge eine neue Funktion an der Bindung On Update hinzu, um eine neue Funktion zur Auswahl eines Proxy-Table-Assets zu erstellen.
Füge einen Evaluate Proxy-Knoten vom On Update-Knoten hinzu.
Wähle dann den Knoten und dann über die Dropdown-Liste das Proxy-Asset in der Proxy-Eigenschaft aus.
Mach das Ergebnis anschließend zu einer Variablen und verbinde den Output mit dem Sequence-Player-Knoten.
Du kannst anschließend das aktive Proxy-Table-Asset auf dem Evaluate-Proxy-Knoten mit verschiedenen Methoden, etwa einer Chooser-Tabelle, festlegen, um das Animationsset des Charakters dynamisch zu verändern.
Erstellen eines neuen Chooser-Table-Assets
Ein Chooser-Asset wird verwendet, um Animation-Datensets zu speichern, die aus verschiedenen Iterationen einer Animation bestehen, die basierend auf dem Kontext ausgewählt und abgespielt werden können. Zum Beispiel kann eine Chooser-Tabelle eine Reihe von Trefferreaktionsanimationen enthalten, wobei jeder Eintrag eine Animation ist, die auf einen anderen Körperteil reagiert (Arme, Beine, Brust, Kopf) und anhand einer kontextbezogenen Variable, z. B. der Position des Treffers, ausgewählt werden kann.
Verwende (+) Add im Inhaltsbrowser und gehe zu Miscellaneous > Chooser-Table, um ein Chooser-Table-Asset zu erstellen.
Nachdem du die Chooser-Table erstellt hast, kannst du das Asset öffnen, um auf seine Eigenschaften zuzugreifen.
Erstelle ein neues Array-Element in der Context-Data-Eigenschaft mit (+) Add und stelle die Eigenschaft auf die Option Context Object Type Class ein. Erweitere dann das Index-Array, setze die Eigenschaft Class auf den Animationsblueprint deines Charakters und stelle sicher, dass die Eigenschaft Direction auf Read gesetzt ist. Du kannst dann den Output-Objekttyp auf das Animation-Asset festlegen, das du verwendest. Dieses Workflow-Beispiel verwendet Animationssequenzen, daher wurde die AnimSequenceBase-Option ausgewählt.
Im Chooser-Table-Panel kannst du damit beginnen, Spalten hinzuzufügen, um die Variablen aus dem Animation einzustellen, die du auf den verarbeiten Einfluss möchtest. Nutze dazu die Schaltfläche (+) Add Column. Nachdem du eine Spalte erstellt hast, kannst du definieren, welche Variable aus deinem Animationsblueprint die Auswahl beeinflussen kann, und ebenso die Werte oder Zustände der Variablen, die erreicht werden müssen, um das Animationssequenz-Asset in jeder Zeile auszuwählen.
In diesem Workflowbeispiel wählt die boolesche Variable IsCrouching die Animation MM_HangingIdle aus, wenn der Wert „false“ ist, und wählt MM_Rifle_Walk_Left aus, wenn der Wert „true“ ist. Die Variable MoveemntAngle wählt MM_HangingIdle aus, wenn der Wert zwischen -100 und 100 liegt, während die Animation MM_Rilfe_Walk_Left nur beim Wert 0.0 ausgewählt wird.
Um die Charakteranimationen mithilfe dieses Auswahlverfahrens zu steuern, musst du deinen Proxy-Table-Eintrag auf Evaluate Chooser setzen und das Chooser-Table-Asset zuweisen.
Jetzt ändert sich die ausgewählte Animation basierend auf dem aktiven Proxy-Table-Asset und der Auswahl in der Chooser-Table.