Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

2D-Animationen in Unity

Gehe in den Scenenbildschirm und wähle deinen Spieler. Öffne das Animationsfenster. Um mit der Animation beginnen zu können, benötigst du einen Animator und einen Animation Clip.

Wähle die Player aus und gehe unter Window auf Animation –>Animation

2D-Animationen in Unity 49

Du benötigst einen Animator und einen Animation Clip.

Werbung

Wähle Create, erstelle einen Ordner für Animationen und Speichere die Animation unter Player_Idle.

Es erscheint die Zeitleiste, in der die Animationssprites positioniert werden können.

Ziehe die Sprites zur Animation, ins Animationsfenster. Die Frames werden hinzugefügt:

2D-Animationen in Unity 50

Jetzt würde die Spielfigur viel zu schnell animiert. Es ist nötig die Bilder, die pro Sekunde abgespielt werden, anzupassen.

Um die Sample Rate anzeigen zu lassen, wähle die Einstellungen vom Animationsfenster und wähle „Show Sample Rate“

2D-Animationen in Unity 51

Diese steht jetzt auf 60.

Werbung
2D-Animationen in Unity 52

Ändere sie auf 12.

Dann läuft die Animation nicht mehr ganz so schnell ab.

Die Bilder lassen sich per Drag & Drop auf der Zeitleiste verschieben oder mit Entf. entfernen.

Das Ganze funktioniert auch für andere Animationen, wie zum Beispiel das Laufen vom Charakter.

Wähle dafür: Create New Clip

2D-Animationen in Unity 53

Wiederhole dies fürs Ducken und fürs Springen.

Wenn du beim Springen nicht so viele Sprites besitzt und beispielsweise nur 2 Sprites hast, kannst du den Samples-Wert auf 2 setzen.

Im Animationsordner hat der Animator Controller einer andere Icon-Darstellung als die Animationen:

2D-Animationen in Unity 54

Er bestimmt, wann welche Animation abgespielt wird.

Mit einem Doppelklick öffnet sich der Animator:

2D-Animationen in Unity 55

Dort wird bestimmt, welche Animation abgespielt wird. Aus dem Projekt lässt sich per Drag & Drop direkt eine Animation in den Animator ziehen.

Player_Idle ist mit einem orangen Pfeil verbunden und orange markiert, weil es die Ausgangsanimation ist. Wenn man das Spiel startet, wird ständig die „Idle-Animation“ abgespielt. Mit der rechten Maustaste kannst du „Set as Layer Default State“ auswählen und damit eine andere Animation zur Ausgangsanimation machen.

Wenn du anfängst zu rennen, sollte die Animation zur entsprechenden Animation wechseln. Wähle Player_Idle mit der rechten Maustaste und wähle Make Transition. Damit erstellst du eine Verbindung von Player_Idle zu Player_Run.

2D-Animationen in Unity 56

Wählst du die Verbindung, kannst du bearbeiten, wann die Veränderung von einer zur anderen Animation stattfinden soll.

Dafür benötigst du eine Bedingung. Damit das funktioniert, brauchst du außerdem einen Parameter.

2D-Animationen in Unity 57

Erstelle einen „float“.

2D-Animationen in Unity 58

Er repräsentiert die Geschwindigkeit des Spielers.

2D-Animationen in Unity 59

Anschließend fügst du die Bedingung ein:

2D-Animationen in Unity 60

Du legst beispielsweise fest, das die Animation wechselt, wenn die Geschwindigkeit größer als 0.01 ist:

2D-Animationen in Unity 61

Wenn die Spielfigur sich bewegt, startet sie mit der anderen Animation.

Deaktiviere „Has Exit Time“.

2D-Animationen in Unity 62

Ändere die Transition Duration auf 0.

2D-Animationen in Unity 63

Die Animation vom Rennen soll beendet werden, wenn die Figur aufhört zu laufen. Erstelle eine weitere Transition, die zu Idle zurückgeht.

Wähle hier die Bedingung, dass die Animation wechselt, wenn die Geschwindigkeit kleiner als 0.01 ist.

2D-Animationen in Unity 64

Auch hier deaktiviere „Has Exit Time“ und setze die Transition-Dauer auf 0.

2D-Animationen in Unity 65

Die Änderungen jetzt, werden im Script vorgenommen:

Wir haben bei einem Charakter 2 Scripts: Der CharacterController kümmert sich um die Physik, die den Charakter bewegt und das PlayerMovement-Script, das sagt, wann die Figur sich bewegt und mit welcher Geschwindigkeit.

Öffne zuerst das PlayerMovement-Script. Zuerst wollen wir Zugriff auf den Animator haben:

Unity fügt beim Erstellen einer Animation den Animator zum Spieler hinzu. Er bezieht sich auf den Animator Controller, der wiederum den Bezug zum Spieler herstellt. Der Animator muss duch das PlayerMovement Script kontrollierbar sein:

public Animator animator;

Gehe zurück in Unity und du siehst, das jetzt im Player Movement Script das Animator-Feld erscheint. Dort wird dann die Animator-Komponente aus dem Inspectorfenster hineingezogen.

2D-Animationen in Unity 66
2D-Animationen in Unity 67

Jedesmal wenn im Script Animator geschrieben wird, greifen wir auf die Animatorkomponente zu.

In der Updatefunktion greifst du jetzt auf den Animator und die dazugehörige Komponente zu:

animator.SetFloat(„Speed“, Mathf.Abs(horizontalMove);

Die Funktion Mathf.Abs sorgt dafür, das der Wert der Bewegung deines Charakters immer positiv ist.

2D-Animationen in Unity 68

Wenn du jetzt dein Spiel in Unity startest, spielt Unity beim Laufen die Animation deines Charakters ab. Wenn du anhältst, ist die Idle-Animation aktiviert.

Jetzt geht es um das Springen: Dafür nutzen wir die Möglichkeit von „Any State“ im Animator. Egal welche Animation gerade abgespielt wird, wenn der Charakter springt, wechselt er zu dieser Animation.

Dafür wird eine Bedingung benötigt, damit der Charakter nicht die ganze Zeit hüpft: Jetzt wird ein weiterer Parameter gebraucht.

2D-Animationen in Unity 69

Nenne diesen: IsJumping und setze als Bedingung „IsJumping“ auf true.

2D-Animationen in Unity 70

Wir wollen keine Exit Time und setzen die Transition-Dauer auf 0.

2D-Animationen in Unity 71

Der Charakter soll von der Animation zum Springen wieder zum „Idle“ zurückkönnen. Es wird eine weitere Verbindung erstellt.

2D-Animationen in Unity 72

Die Bedingung „IsJumping“ wird auf false gesetzt und Speed auf Less 0.01.

2D-Animationen in Unity 73

Eine weitere Verbindung wird von Jump zu Run erstellt. Der Wechsel zum Laufen bekommt weitere Bedingungen:

IsJumping = false und Speed >0.01

2D-Animationen in Unity 74

Bei beiden setzten wir die HasExit-Time auf false und die Duration auf 0.

Jetzt wird das Script für die Animationen angepasst:

animator.SetBool(„IsJumping“, true);

2D-Animationen in Unity 75

Wir vermitteln dem PlayerMovementScript, das der Charakter aufhört mit springen, wenn er landet:

public void OnLanding ()

{

animator.SetBool(„IsJumping“, false);

}

2D-Animationen in Unity 76

Jetzt können wir in Unity ein neues OnLandEvent hinzufügen:

Du fügst ein OnLandEvent ein und wählst unter PlayerMovement: OnLanding()

2D-Animationen in Unity 77

Dann spielt Unity beim Springen die Sprunganimation ab und wenn der Charakter landet, beendet es sie.

Unity spielt die Animation immer sehr kurz ab. Deaktiviere „Can Transition to Self“, damit die Animation komplett abgespielt wird:

2D-Animationen in Unity 78

Jetzt wird die Animation fürs Ducken hinzugefügt.

Stelle eine Verbindung von Idle zu Crouch her:

2D-Animationen in Unity 79

Füge ein Bedingung hinzu: Erstelle einen neuen Paramter: IsCrouching

Wenn Crouching IsTrue, dann soll die Figur sich ducken:

2D-Animationen in Unity 80

Bearbeite wieder die ExitTime und die Dauer. Stelle wieder eine Rückverbindung her.

2D-Animationen in Unity 81

Wenn du die Exit Time deaktivierst und die Dauer für die Animation auf 0 setzt, verlängere die Exit Time zuerst und deaktivere sie erst danach, da sonst jede Menge Warnungen in die Konsole wandern. Erstelle eine weitere Verbindung von der Run-Animation.

2D-Animationen in Unity 82

Ertstelle eine weitere Rückverbindung:

IsCrouching ist false und Speed > 0.01

2D-Animationen in Unity 83

Füge noch ein OnCrouchEvent hinzu.

Dafür benötigen wir eine weitere Funktion im PlayerMovement-Script:

public void OnCrouching (bool isCrouching)

{

animator.SetBook(„IsCrouching“, isCrouching);

}

2D-Animationen in Unity 84

Füge jetzt das CrouchEvent hinzu. Wichitg: Im Script muss vor dem public class BoolEvent [System.Serializable] stehen. Ansonsten erscheint das CrouchEvent nicht im Inspectorfenster von Unity:

2D-Animationen in Unity 85
2D-Animationen in Unity 86

Füge wieder das PlayerMovement Script hinzu. Wähle unter dem PlayerMovement Script das OnCrouching aus dem oberen Abschnitt.

2D-Animationen in Unity 87
2D-Animationen in Unity 88


This post first appeared on Games Und Lyrik, please read the originial post: here

Share the post

2D-Animationen in Unity

×

Subscribe to Games Und Lyrik

Get updates delivered right to your inbox!

Thank you for your subscription

×