Grundlagen: Animation in Unity scripten mit Lerp und Coroutinen

Das Animation-Tool in Unity ist sehr praktisch. Für größere Animationen auf jeden Fall.

Wenn es aber um kleine Animationen geht, ist man mit ein paar zeilen Code oft besser dran, weil die programmierte Animation oft vielseitiger einsetzbar ist.


1. Was ist Lerp

Lerp steht für lineare Interpolation. Nehmen wir an, wir haben zwei Punkte A und B. Die Punkte haben einen bestimmten Abstand zueinander. Die Gesamtstrecke wird als t ausgedrückt, t kann zwischen 0 und 1 liegen.


Beispiel Animation für Lineare Interpolation

Der Wert t wir hier in die Methode Vector3.Lerp gegeben und sein Wert (zwischen 0 und 1) steht hier also stellvertretend für die Position zwischen zwei Punkten.

Vector3.Lerp errechnet also eine Position an einer gegeben Stelle zwischen 0 und 1 im Verhältnis zu 2 Punkten als Vector3.


2. Lerpen kann man vieles

Das Tolle ist, Unity hat zahlreiche Lerp Methoden. Für Zahlen, Vektoren, Quaternionen(Rotation) und Farben.


Beispiel Animation für Lineare Interpolation zwischen zwei Farben

Werbung (Affiliate - ich bekomme eine kleine Provision, dein Preis ändert sich nicht)


3. Animation mit Lerp in der Update-Methode

Sicher ist dir schon klar, dass man Lerp prima für Animationen nutzen kann. Zum Beispiel im Update.


Beispiel für automatische Animation zwischen 2 Punkten

4. Besonders praktisch für gescriptete Animationen: Coroutinen

Für Animationen die gescriptet sind, verwendet man in Unity häufig Coroutinen.

Aber was sind Coroutinen überhaupt?

Unity verwendet Frames zur Darstellung der Zeit. Normale Methoden werden in einem Frame ausgeführt und dann wird mit der nächsten Anweisung fortgefahren. Coroutinen können verwendet werden, um einen Code über mehrere Frames hinweg auszuführen. Sie können auch verwendet werden, um einen Codeabschnitt so lange auszuführen, bis er angewiesen wird zu stoppen.

Das ist genau was wir brauchen, um Animation einfach zu starten, zu wiederholen oder zu beenden. Im unteren Beispiel wird diesmal die Rotation animiert.


Beispiel für automatische Animation als Rotation mit Coroutine

5. Ein bisschen smoother könnte es schon sein oder?

So eine lineare Animation ist natürlich nicht immer gut geeignet. Manchmal möchte man Animation z.B. langsamer anlaufen oder auslaufen lassen.

Das geht ganz einfach mit AnimationCurve in Unity. Über ein solche Kurve lässt sich ein Wert in einem zeitlichen Verlauf beschreiben. Die Methode Evaluate(t) kann dann genutzt werden, um den jeweilgen Wert zu bekommen.

Unity AnimationCurve

Im folgenden ist eine Box animiert, die sich nicht so ganz entscheiden kann, wohin es gehen soll.


Beispiel für eine Animation mit AnimationCurve

6. Das Thema als Video


7. Kleine Übung gefällig?

Wenn du Lust auf eine kleine Übung hast, habe ich folgende Idee für dich:

Du könnst eine Aufprallanimation für einen Ball schreiben der einen Rigidbody hat, also physikalische Eigenschaften besitzt.

Immer wenn der Ball auf dem Boden ankommt, wird die Animation gestart, in der der Ball platt gedrückt wird und dann wieder zu seiner Originalgröße zurückkehrt.

Viel Spaß dabei!