Der Alarmzustand
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 36 von 64.
Aufgabe
MittelAlarmiere den Geschützturm, wenn sich der Spieler nähert.
- Schreibe in
TurretStates.csAlertState, das den Kopf und den Spieler erhält. Beim Eintritt: Kopf aufColor.redsetzen,Intruder!protokollieren. Bei Tick: den Spieler in der y-Ebene anvisieren. Beim Austritt:All clearprotokollieren. - Schreibe in
TurretSetState(IState next): zuerst Exit des alten Zustands, dann Enter des neuen. - Aktualisiere den Alarm innerhalb von
range, scanne andernfalls und führe dann einen Tick des aktuellen Zustands aus.
Drücke „Spielen“ und gehe näher heran. Drücke anschließend „Prüfen“.
Probier es selbst
using UnityEngine;
public class ScanState : IState
{
private Transform head;
private float angle;
private float direction = 1f;
public ScanState(Transform head)
{
this.head = head;
}
public void Enter()
{
angle = 0f;
direction = 1f;
head.GetComponent<Renderer>().material.color = Color.green;
}
public void Tick()
{
angle += 90f * direction * Time.deltaTime;
if (angle > 45f)
{
angle = 45f;
direction = -1f;
}
if (angle < -45f)
{
angle = -45f;
direction = 1f;
}
head.localRotation = Quaternion.Euler(0f, angle, 0f);
}
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