Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Projektil Senden
Die Projectile
-Klasse ist verantwortlich für die Verwaltung des Verhaltens von Projektilen, die der Feind auf den Spieler abfeuern kann. Diese Klasse kümmert sich um die Einrichtung der Richtung und Geschwindigkeit des Projektils, die Aktualisierung seiner Bewegung und die Behandlung von Kollisionen.
Setup-Methode
Zweck: Diese Methode richtet den Anfangszustand des Projektils ein.
Parameter: Nimmt einen Vector2 direction
Parameter, um die Richtung festzulegen, in die das Projektil reisen wird.
Aktionen: Legt die Richtung des Projektils fest, erhält die Rigidbody2D
-Komponente, die dem Projektil angehängt ist, dreht das Projektil, um in die Richtung zu zeigen, in die es reisen wird, und plant, das Projektil nach 6 Sekunden zu zerstören, um zu verhindern, dass es unbegrenzt existiert.
Update-Methode
Zweck: Diese Methode aktualisiert die Bewegung des Projektils.
Aktionen: Setzt die Geschwindigkeit des Rigidbody2D
, um das Projektil in die angegebene Richtung mit der angegebenen Geschwindigkeit zu bewegen.
OnTriggerEnter2D-Methode
Zweck: Diese Methode behandelt Kollisionen mit anderen Objekten.
Parameter: Nimmt einen Collider2D collision
Parameter, um Kollisionen zu erkennen.
Aktionen: Protokolliert den Namen des Objekts, mit dem das Projektil kollidiert ist, überprüft, ob das Projektil mit einem Objekt mit dem Tag "Player" kollidiert ist, und wenn das Objekt eine Komponente hat, die das IGetAttacked
-Interface implementiert, ruft es die GetAttacked
-Methode auf dieser Komponente auf, um Schaden zu verursachen. Schließlich zerstört es das Projektil, nachdem es den Spieler getroffen hat.
Warum wir es so gemacht haben
Modular und Wiederverwendbar: Die Projectile
-Klasse ist so konzipiert, dass sie modular und wiederverwendbar für jede Art von Projektil ist, das der Feind verwenden könnte. Durch das Festlegen der Richtung und Geschwindigkeit können verschiedene Projektile mit unterschiedlichen Verhaltensweisen erstellt werden.
Effiziente Bewegungssteuerung: Die Verwendung der Rigidbody2D
-Komponente für die Bewegung stellt sicher, dass sich das Projektil gemäß dem Physiksystem von Unity verhält und eine reibungslose und realistische Bewegung bietet.
Kollisions- und Schadensbehandlung: Die OnTriggerEnter2D
-Methode stellt sicher, dass das Projektil Kollisionen mit dem Spieler erkennen und entsprechend Schaden zufügen kann, wodurch die Interaktion zwischen Projektil und Spieler effektiv wird.
SendProjectileState Klasse
Die SendProjectileState
-Klasse ist ein spezifischer Zustand, der das Verhalten des Feindes beim Abschuss eines Projektils steuert. Diese Klasse erbt von der State
-Klasse und enthält Methoden zum Starten, Beenden und Initiieren der Projektilangriffsaktion.
Konstruktor
Der Konstruktor initialisiert den SendProjectileState
mit einem Animator
für Animationen und einer Aktion zum Senden des Projektils. Er setzt diese Werte auf die entsprechenden Mitgliedsvariablen.
StartState Methode
Diese Methode setzt isStateFinished
auf false
und löst die Projektilanimation aus, indem der "projectil"-boolesche Parameter im Animator auf true
gesetzt wird.
StartAction Methode
Diese Methode ruft sendProjectileFunc
auf, die die für das Senden des Projektils definierte Aktion ausführt. Diese Methode wird typischerweise von einem Animator-Ereignis aufgerufen, um den Projektilstart mit der Animation zu synchronisieren.
EndState Methode
Diese Methode stoppt die Projektilanimation, indem sie den "projectil"-booleschen Parameter im Animator auf false
setzt.
Warum wir es so gemacht haben
Modular und Wiederverwendbar:
Die SendProjectileState
-Klasse ist so konzipiert, dass sie modular ist und eine flexible Integration verschiedener Projektilsendeverhalten durch die Verwendung von System.Action
ermöglicht.
Animation Integration: Durch die Verwendung von Animator-Parametern stellt der Zustand sicher, dass der Projektilstart mit der entsprechenden Animation synchronisiert ist, was ein reibungsloses und realistisches Erlebnis bietet.
Projektil senden Funktion
Die Methode SendProjectile
ist verantwortlich für das Erstellen und Abschießen eines Projektils in Richtung des Spielers. Diese Methode berechnet die Richtung vom Feind zum Spieler, instanziiert das Projektil und richtet es so ein, dass es sich in die berechnete Richtung bewegt.
Methodendefinition und Komponenten
Methodendefinition:
void SendProjectile()
: Diese Methode gibt keinen Wert zurück und ist dafür ausgelegt, den Projektilabschuss zu handhaben.
Komponenten:
Vector2 direction = (player.position - transform.position).normalized;
Diese Zeile berechnet die Richtung vom Feind zum Spieler, indem die Position des Feindes von der Position des Spielers subtrahiert wird. Der .normalized
Teil stellt sicher, dass der Richtungsvektor eine Länge von 1 hat, wodurch er ein Einheitsvektor ist, der nur die Richtung angibt.
Instantiate(projectile, projectileSendingPosition.position, Quaternion.identity).Setup(direction);
Diese Zeile erstellt eine neue Instanz des Projektils an der angegebenen Position (projectileSendingPosition.position
) ohne Rotation (Quaternion.identity
). Die Setup
-Methode wird auf dem instanziierten Projektil aufgerufen, um seine Richtung festzulegen.
Verknüpfung mit dem Unity Animator
Wir rufen die Funktion StartAction
mithilfe von Animator-Ereignissen auf. Dies ermöglicht es uns, den genauen Frame innerhalb der Animation des Feindes anzugeben, bei dem das Projektil gesendet werden soll. Da die Animation aus vielen Frames besteht, ist es wichtig, den genauen Moment für diese Aktion zu bestimmen.
Danke für Ihr Feedback!