Mit dem Unity Animator Controller können wir die einzelnen Animationen für unseren Unity Character festlegen, wie z.b. Wartestellung (Idle) und Laufen (Walk). Den Unity Animator Controller wurde bereits angelegt, als die erste Animation erstellt wurde und wird in der Regel im gleichen Verzeichnis wie unser Unity Animationclip gespeichert. Unseren Unity Animator Controller können wir über die Menüleiste Windows -> Animation -> Animator öffnen.
Unity Animator Controller
Im Base Layer befinden sich bereits 4 Elemente, die wir verschieben und bearbeiten können. Das Any State Element lassen wir erstmal außer Betracht. Für uns ist erstmal das Entry und das walkRight Element von Interesse. Da unsere Spielfigur nicht sofort nach rechts läuft, werden wir noch ein neues Element mit dem Name Idle erstellen. Dazu klicken wir im Unity Animator im freien Bereich auf die linke Maustaste und selektieren im Menü den Eintrag Create State -> Empty. Nun ist ein neues Element mit dem Namen New State erschienen. Diesen Bennen wir nun in Idle um. Dies können wir einfach, in dem wir das New State Element markieren und im Unity Inspector den Name New State durch Idle ersetzen. Zur besseren Übersicht verschieben wir nun das Idle Element schräg neben das Entry Element und das walkRight Element platzieren wir direkt neben das Idle Element. Damit unser Unity Character bei Spielbeginn direkt in den Idle Modus wechselt, müssen wir die vorhandene default Transition mit dem Idle Element verbinden. Dazu klicken wir mit der rechten Maustaste auf das Idle Element und es öffnet sich ein Menü, wo wir den Eintrag Set as Layer default wählen.
Im Folgenden verbinden wir die zwei Elemente Idle und walkRight miteinander. Dies erledigen wir, indem wir mit der rechten Maustaste auf Idle klicken und den Eintrag Make Transition auswählen. Es erscheint eine Transition in Form von einem Pfeil, welchen wir am Element walkRight befestigen, in dem wir auf dieses Element klicken. Damit die Animation auch wieder in den Idle Modus wechselt, müssen wir eine weitere Transition von walkRight zu Idle einrichten.
Unity Animator Controller per C# Script steuern
Damit wir unsere Unity Character Spielfigur per Tastatur steuern können werden wir unser erstes C# Script programmieren. Dazu wählen wir in der Menüleiste unter Assets -> Create -> C# Script. Nun wechseln wir in das Project Fenster, da hier im Asset Verzeichnis die c# Script Datei erstellt wurde und wir nur noch Bennen müssen. Wir haben uns für den Name movePlayer entschieden.
Durch ein Doppelklick auf unsere C# Script movePlayer Datei, können wir unser Script in einem externen Programm wie Visual Studio bearbeiten. Aber schauen wir uns erst mal das Standard C# Script an, welches von der Unity Engine erstellt wurde.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movePlayer : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
Wenn wir uns das Unity Script etwas genauer ansehen, sehen wir einem den Start und Update Bereich. Im Start Bereich sollte sämtlicher code rein, welcher direkt am Anfang ausgeführt werden sollte. Im Update Bereich kommt der code welcher nach jedem Frame ausgeführt werden soll. Hier werden wir dann unsere Abfrage zur Tastatur programmieren.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movePlayer : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown("right"))
{
if (anim != null)
{
anim.ResetTrigger("Idle");
anim.SetTrigger("Activ");
}
}
if (Input.GetKeyUp("right"))
{
if (anim != null)
{
anim.ResetTrigger("Activ");
anim.SetTrigger("Idle");
}
}
}
}
Unity trigger Animator
Damit unser C# Script oben funktioniert müssen wir noch eine ein Unity trigger Animator setzen. Dazu wechseln wir wieder zum Unity Animator und legen zwei Parameter Activ und Idle an. Hier klicken wir auf dem Pluszeichen und wählen Trigger.
Diese Parameter müssen wir nun entsprechend den einzelnen Elementen hinzufügen. Im Unity Inspector des Element Idle, klicken wir unter der Transitions Eigenschaft auf Idle -> walkRight, so das weitere Eigenschaften im Inspector angezeigt werden. Bei der Eigenschaft Conditions klicken wir auf das Pluszeichen und wählen anschließend Activ aus. Für den zweiten Parameter klicken wir nun das Element walkRight und suchen hier die Eigenschaft Conditions und wählen Idle aus.
Abschließend sollten wir noch die Eigenschaft Has Exit Time, wie oben in den beiden Bildern zu sehen ist deaktivieren. Bei Unity Inspector von walkRight können wir noch den Übergang von walkRight auf Idle festlegen. Am besten einfach mal ausprobieren, indem Ihr in der Timeline, den Übergang auspendelt.
Unity C# Script hinzufügen
Als letztes müssen wir nur noch unser C# Script movePlayer unserem GameObject Player in der Unity Hierarchy hinzufügen. Wenn wir das GameObject Player markiert haben, klicken wir im Unity Inspector das Add Component Button. Daraufhin öffnet sich das Component Fenster wo wir Scripts und anschließend Move Player auswählen. Nun können wir unsere Spielfigur im Game Modus testen.
Unity Animator
Damit unsere Spielfigur nicht immer wieder zur Ursprungsposition zurückspringt, sondern weiter nach rechts läuft, müssen wir im Unity Inspector, unter Animator die Eigenschaft Apply Root Motion deaktivieren.
Wenn wir alles Richtig gemacht haben, sollte sich unser Pirat per Pfeiltaste rechts (End) nach rechts bewegen lassen.
Inhaltsverzeichnis Unity Animation
Beitrag | Unity Animation |
---|---|
Teil 1 | Unity Animation |
Teil 2 | Unity Animationclip |
Teil 3 | Unity Animator Controller |
Teil 4 | Unity C# Script |