Der Ritter greift an
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 40 von 64.
Aufgabe
MittelLass den Ritter angreifen, wenn er den Spieler erwischt.
- Schreibe in
KnightStates.csden ZustandAttackState:knight.Stop()und sofortknight.playerHealth.TakeDamage(1), dann jede Sekunde. Bei einer größeren Entfernung alsattackRangesoll er verfolgen. - Wechsle in
ChaseStatebei einer geringeren Entfernung alsattackRangezuknight.attack. - Füge in
Knights Awakeattack = new AttackState(this);hinzu.
Drücke „Spielen“ und lass den Ritter dich erwischen: In der Console wird Player hp: 9 angezeigt. Drücke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class PatrolState : IState
{
private Knight knight;
private int next;
public PatrolState(Knight knight)
{
this.knight = knight;
}
public void Enter()
{
}
public void Tick()
{
if (knight.PlayerDistance() < knight.sightRange)
{
knight.machine.ChangeState(knight.chase);
return;
}
Vector3 point = knight.waypoints[next].position;
if (knight.DistanceTo(point) < 0.3f)
{
next = (next + 1) % knight.waypoints.Length;
}
knight.WalkTo(knight.waypoints[next].position);
}
public void Exit()
{
}
}
public class ChaseState : IState
{
private Knight knight;
public ChaseState(Knight knight)
{
this.knight = knight;
}
public void Enter()
{
}
public void Tick()
{
float distance = knight.PlayerDistance();
if (distance > knight.loseRange)
{
knight.machine.ChangeState(knight.patrol);
return;
}
knight.WalkTo(knight.player.position);
}
public void Exit()
{
}
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basis-GegnerskriptAbstrakte KomponentenZusammenwirkende KomponentenRückblick: Modulares GeschützRückblick: Zwillingskanone4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-TabelleRückblick: Beute auswürfeln7Zustandsautomaten
Zustände als KlassenDer AlarmzustandEin ZustandsautomatÜbergängeGegner-KIDer Ritter greift anRückblick: Türzustände2Schnittstellen in Unity
IDamageableSchnittstellen und TryGetComponentGetComponentsZusammenfassung: InteraktionstasteZusammenfassung: Nächstes in Reichweite5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenDen Wind speichernWellen als DatenRückblick: Item-DatenbankRückblick: Im Shop einkaufen8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearestÜbe selbstständig: Unity-Playground