Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Wut-Zustand | 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
Wut-Zustand

Erklärung der RageState-Klasse

Die RageState-Klasse ist ein spezifischer Zustand, der das Verhalten des Feindes steuert, wenn er in den Wutmodus eintritt. Diese Klasse erbt von der State-Klasse und enthält Methoden, um den Wutzustand zu starten, zu aktualisieren und zu beenden. Sie enthält auch Aktionen, um Gesundheit hinzuzufügen und den Angriffsschaden zu ändern, wenn der Feind im Wutmodus ist.

Klassendefinition und Mitgliedsvariablen

Klassendefinition;

public class RageState : State Diese Klasse erbt von der State-Klasse, was bedeutet, dass sie die abstrakten Methoden implementieren muss, die in State definiert sind.

Mitgliedsvariablen:

Animator animator; Steuert die Animationen.
System.Action addHealth; Eine Aktion, um dem Feind Gesundheit hinzuzufügen.
System.Action changingAttackDmg; Eine Aktion, um den Angriffsschaden des Feindes zu ändern.

Konstruktor

Der Konstruktor initialisiert den RageState mit den notwendigen Komponenten: einem Animator für Animationen und zwei Aktionen zum Hinzufügen von Gesundheit und Ändern des Angriffsschadens. Er setzt diese Werte auf die entsprechenden Mitgliedsvariablen.

StartState-Methode

Diese Methode setzt isStateFinished auf false, löst die Wutanimation aus, indem sie den "rage"-Boolean-Parameter im Animator auf true setzt, und ruft changingAttackDmg auf, um den Schaden des Feindes zu erhöhen.

UpdateState Methode

Diese Methode wird in jedem Frame aufgerufen und ruft addHealth auf, um dem Feind kontinuierlich Gesundheit hinzuzufügen, während er sich im Rage-Zustand befindet.

EndState Methode

Diese Methode stoppt die Rage-Animation, indem der "rage"-boolesche Parameter im Animator auf false gesetzt wird.

Warum wir es so gemacht haben

Verbesserte Feindverhalten;

Der RageState verbessert das Verhalten des Feindes, indem er seinen Angriffsschaden erhöht und kontinuierlich Gesundheit hinzufügt, was es für den Spieler herausfordernder macht; Die Verwendung von Aktionen (System.Action) ermöglicht flexible und modulare Änderungen an den Attributen des Feindes.

Dynamisches und fesselndes Gameplay:

Indem der Feind in einen Rage-Zustand versetzt wird, wird das Gameplay dynamischer und fesselnder, da der Spieler sich an den stärkeren und widerstandsfähigeren Feind anpassen muss.

Wie es im Kontext funktioniert

Eintreten in den Rage-Zustand: Wenn der Feind den RageState betritt, wird die Methode StartState aufgerufen, die die Rage-Animation auslöst und den Angriffsschaden des Feindes erhöht.

Während der Rage: Die Methode UpdateState wird in jedem Frame aufgerufen. Sie fügt dem Feind kontinuierlich Gesundheit hinzu, was es dem Spieler erschwert, den Feind zu besiegen.

Verlassen des Rage-Zustands: Wenn der Feind den RageState verlässt, wird die Methode EndState aufgerufen, die die Rage-Animation stoppt.

Durch die Strukturierung des RageState auf diese Weise stellen wir sicher, dass der Feind erheblich mächtiger und widerstandsfähiger werden kann, was eine größere Herausforderung für den Spieler darstellt und das gesamte Spielerlebnis verbessert.

Rage-Zustand initialisieren

Erklärung

RageState-Initialisierung:

rage = new RageState(animator, (...) => {...}, (...) => {...}); Erstellt eine neue RageState-Instanz namens rage;

Animator:

animator: Überträgt den Animator zur Steuerung der Animationen;

Gesundheit erhöhen:

() => { health += 10f * Time.deltaTime; } Eine Lambda-Funktion, die die Gesundheit um 10 Einheiten pro Sekunde erhöht;

Angriffsschaden ändern:

() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); } Eine Lambda-Funktion, die den Angriffsschaden von attack1 auf 15 und attack2 auf 25 ändert.

Wut-Übergang

Der rageTransition ist ein Übergang, der den Feind in einen RageState versetzt, wenn bestimmte Bedingungen erfüllt sind. Dieser Übergang ist so konzipiert, dass der Feind bedrohlicher wird, wenn seine Gesundheit unter einen bestimmten Schwellenwert fällt und er noch nicht in den Wut-Zustand eingetreten ist.

Übergangsdefinition

Bedingung:

Der Übergang überprüft, ob die Gesundheit des Feindes kleiner oder gleich 40 ist und ob der Feind noch nicht in den Wut-Zustand eingetreten ist (haveRaged ist false). Wenn beide Bedingungen erfüllt sind, wird haveRaged auf true gesetzt, um sicherzustellen, dass der Feind nur einmal in den Wut-Zustand eintritt, und es wird true zurückgegeben, um den Übergang auszulösen.

State Pourcentage:

Der Übergang verwendet new StatePourcentage(rage, 100f), um anzuzeigen, dass, wenn die Bedingung erfüllt ist, der Feind mit 100% Wahrscheinlichkeit in den RageState übergeht.

Warum wir es so gemacht haben

Auslösen mächtiger Verhaltensweisen: Der rageTransition ermöglicht es dem Feind, mächtiger zu werden, wenn seine Gesundheit kritisch niedrig ist, was die Herausforderung für den Spieler erhöht. Dieser Übergang stellt sicher, dass der Feind nur einmal in den Rage-Zustand eintritt, um wiederholte Übergänge in den Rage-Zustand zu verhindern.

Dynamisches und herausforderndes Gameplay: Durch die Einführung des Rage-Zustands unter kritischen Gesundheitsbedingungen wird das Gameplay dynamischer und herausfordernder, was vom Spieler erfordert, seine Strategie anzupassen.

Wie es im Kontext funktioniert

Gesundheitsüberprüfung: Während des Spiels wird die Gesundheit des Feindes überwacht, wenn er Schaden nimmt. Wenn die Gesundheit des Feindes auf 40 oder darunter fällt und er noch nicht in Rage geraten ist, wird die rageTransition-Bedingung erfüllt.

Auslösen des Rage-Zustands: Sobald die Bedingung erfüllt ist, wird haveRaged auf true gesetzt, und der Übergang zum RageState wird mit 100% Wahrscheinlichkeit ausgelöst.

Eintritt in den Rage-Zustand: Der RageState wird initiiert, wodurch der Angriffsschaden des Feindes erhöht wird und kontinuierlich Gesundheit hinzugefügt wird, was den Feind erheblich schwieriger zu besiegen macht.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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