Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Projektil Senden | Feindverhalten
Kampfspiel in Unity
course content

Kursinhalt

Kampfspiel in Unity

Kampfspiel in Unity

1. Unity-Animationssystem
2. Spielerverhalten
3. Feindverhalten
4. Spiel Verbessern
5. Verbessere das Flappy Bird Spiel

book
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.

Was passiert, wenn das Projektil mit einem Spielobjekt kollidiert, das als "Player" markiert ist?

Was passiert, wenn das Projektil mit einem Spielobjekt kollidiert, das als "Player" markiert ist?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 9
We're sorry to hear that something went wrong. What happened?
some-alt