Ich arbeite mit Animationen in Unity und habe bisher nur vier gemacht (Up Down Left und Right) und mein Animationsfenster sieht wie folgt aus ...
Das Problem ist, dass ich, wenn ich mich nach oben bewege, möchte, dass der Held nach oben schaut und nicht in den neutralen Leerlauf wechselt (oder wie auch immer er angefangen hat), aber das bedeutet, dass ich 4 Leerlaufpositionen habe ... und jede von ihnen kann nach oben, unten wechseln , Links oder Rechts und sie gehen exponentiell mit jeder zusätzlichen Aktion ...
Was mir das Gefühl gibt, dass ich etwas falsch mache ...
Gibt es eine bessere Möglichkeit, Übergänge zwischen verschiedenen Aktionen vorzunehmen?
Antworten:
Sie können diese Art von Problem mit BlendTrees lösen (im Allgemeinen ist es ratsam, sich häufig auf Mischbäume zu verlassen). Der Mischbaum ist eine Art Multi-Animationsstatus, der basierend auf einem (Float-) Parameter entscheidet, welche der darin enthaltenen Animationen aktuell aktiv ist (oder alternativ kann die resultierende Animation eine Mischung aus mehreren Animationen sein). Selbst wenn die Animationen nicht gemischt, sondern ausgetauscht werden, erfolgt der Austausch mitten in der Animation (dh wenn die "verlassende" Animation bei 35% liegt, wird die neue Animation ab 35% abgespielt). Von außen ist alles verborgen, als wäre es ein einfacher / einzelner Zustand.
Zum Beispiel haben Sie einen Mischbaum mit 8 Sprite-Animationen (Leerlauf mit 4 Haupt- und 4 Diagonalrichtungen). Dieser Mischbaum enthält zwei Parameter: "horizontal" und "vertikal". Basierend auf diesen beiden Parametern entscheidet der Mischbaum, welche Animation abgespielt werden soll. Basierend auf dem Parameter "horizontal" wählt der Mischbaum zwischen der Animation links / rechts und dem Parameter "vertikal" die Animation oben / unten. In Kombination haben Sie dann alle 8 Animationen mit Diagonalen (es ist dieselbe Idee, die hinter Joypads / Joysticks steckt).
Es ist ein bisschen verwirrend, auch wenn StackExchange keine Links mag, werde ich ein kurzes Beispielvideo verlinken, das ich gemacht habe. Beachten Sie den oberen rechten Teil des Bildschirms. Die grauen Punkte sind die "Zustände" / Animationen und der aktive ist derjenige, der sich dem roten Punkt nähert. Wie eingangs erwähnt, kann es noch komplexer sein und jede Animation kann einen Einfluss / eine Stärke haben, die auf ihrem Abstand zum roten Punkt basiert, was zu einer Mischung zwischen mehreren Animationen führt.
Von außen ist es nur ein Zustand (Mischbaum), und wenn Sie dasselbe Konzept für Gehen und Angreifen anwenden, sind nur drei Zustände verknüpft.
Mischbäume werden mit einem Rechtsklick auf einen leeren Animatorbereich erstellt. Status erstellen -> Aus neuem Mischbaum. Von dort ist alles im Inspektor. Wenn der Mischbaum ausgewählt ist, können Sie den Typ des Mischbaums (1D, 2D usw.) auswählen, Animationen hinzufügen, positionieren (relativ zu Parameterwerten) und die Steuerparameter auswählen.
Wenn Sie weitere Informationen zu Blend Trees wünschen, finden Sie als Nächstes Videos von Unity - Unite 2016 und Unity Tutorials .
quelle
Das Problem hierbei ist, dass Sie versuchen, alles zusammenzubinden, anstatt einen Auslöser zum Umschalten zwischen Leerlauf zu verwenden. Sie sollten die Leerlaufanimation mit einer Bedingung vom Typ if-else oder switch-case auswählen. Ich habe ein Diagramm erstellt, das viel übersichtlicher aussieht (angenommen, eines davon ist der Standardfall):
Zusätzliche Information:
In den Animationsparametern erfahren Sie, wie Sie Parameter festlegen, die der Animator erkennen soll, Zustandsmaschinen zum Kombinieren von Animationen und Zustandsmaschinenverhalten zum Überprüfen der von Ihnen festgelegten Variablen.
quelle