Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Sprintzustand
Animator Controller
Zweck des AnimatorControllers
Die AnimatorController
-Klasse ist dafür konzipiert, das Verhalten des Feindes durch Animator-Ereignisse zu verwalten und auszulösen. Dies ermöglicht eine nahtlose Integration von Animationstransitionen und Zustandsänderungen, wodurch sichergestellt wird, dass das Verhalten des Feindes mit seinen Animationen übereinstimmt.
Klassendefinition und Mitgliedsvariable
Klassendefinition:
public class AnimatorController : MonoBehaviour
definiert eine Klasse, die von MonoBehaviour
erbt, sodass sie an ein GameObject
in Unity angehängt werden kann.
Mitgliedsvariable:
[SerializeField] Enemy enemy;
ist ein serialisiertes Feld, das es ermöglicht, ein Enemy
-Objekt direkt aus dem Unity-Inspektor mit dem AnimatorController
zu verknüpfen.
Die enemy
-Variable ist eine Referenz auf das Feindskript, das Funktionen enthält, die das Verhalten des Feindes steuern.
Methoden
FinishMovement Methode:
public void FinishMovement()
: Diese Methode ruft enemy.FinishMovement()
auf. Sie ist dafür vorgesehen, von einem Animator-Ereignis aufgerufen zu werden, das das Ende einer Bewegungsanimation signalisiert.
EndCurrentState Methode:
public void EndCurrentState()
: Diese Methode ruft enemy.EndCurrentState()
auf. Sie soll von einem Animator-Ereignis aufgerufen werden, um das Ende des aktuellen Zustands zu signalisieren.
Integration mit Animator-Ereignissen
Animator-Ereignisse:
Animator-Ereignisse sind spezielle Ereignisse, die auf Animationszeitleisten innerhalb von Unitys Animator platziert werden können.
Diese Ereignisse können Funktionen in Skripten aufrufen, die an dasselbe GameObject
oder dessen Kinder angehängt sind.
Wie es funktioniert: Während einer Animation, wie z.B. einer Lauf- oder Angriffsanimation, können bestimmte Punkte in der Zeitleiste Ereignisse auslösen.
Dash-Zustand
Erklärung der DashState-Klasse
Die DashState
-Klasse ist ein spezifischer Zustand, der das Dash-Verhalten des Feindes steuert. Diese Klasse erbt von der State
-Klasse und enthält Methoden, um den Dash-Zustand zu starten, zu aktualisieren und zu beenden sowie das Beenden der Bewegung zu handhaben.
Konstruktor
Der Konstruktor initialisiert den DashState
mit den notwendigen Komponenten: einem Rigidbody2D
für die Bewegung, einem Animator
, einem Transform
für den Spieler und einer Dash-Geschwindigkeit. Er setzt die anfängliche Skalierung und initialisiert den Geschwindigkeitsvektor.
StartState Methode
Diese Methode setzt isStateFinished
auf false
und löst die Dash-Animation aus, indem der "dash"-boolesche Parameter im Animator auf true
gesetzt wird. Sie setzt auch das stopDashing
-Flag auf false
zurück.
FinishMovement Methode
Diese Methode setzt stopDashing
auf true
, was die Dash-Aktion in der UpdateState
-Methode stoppt.
UpdateState Methode
Diese Methode aktualisiert die Position und Ausrichtung des Feindes basierend auf der Position des Spielers. Wenn stopDashing
true
ist, kehrt die Methode frühzeitig zurück und stoppt weitere Aktualisierungen. Sie passt die Skalierung des Feindes an, um dem Spieler zugewandt zu sein, berechnet die Geschwindigkeit basierend auf der Geschwindigkeit und wendet diese Geschwindigkeit auf das Rigidbody2D
an.
EndState-Methode
Diese Methode stoppt die Dash-Animation, indem der "dash"-boolesche Parameter im Animator auf false
gesetzt wird.
Warum wir es so gemacht haben
Das stopDashing
-Flag ermöglicht eine präzise Kontrolle darüber, wann der Dash stoppen soll, was das Verhalten reaktionsfähiger auf Spielereignisse macht. Durch die kontinuierliche Aktualisierung der Position und Richtung des Feindes stellt der DashState
sicher, dass der Feind schnell und genau auf den Spieler zudashen kann. Die Verwendung von Animator-Parametern stellt sicher, dass die Animationen des Feindes korrekt mit seinen Bewegungen synchronisiert sind, was ein flüssiges und realistisches Erlebnis bietet.
Danke für Ihr Feedback!