Menu
CoddyTech

Stan alarmowy

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 36 z 64.

challenge icon

Wyzwanie

Średni

Alarmuj wieżyczkę, gdy gracz się zbliży.

  1. W pliku TurretStates.cs napisz AlertState, przekazując głowę i gracza. Przy wejściu: ustaw głowie Color.red, zapisz w logu Intruder!. Przy aktualizacji: skieruj głowę w stronę gracza wokół osi y. Przy wyjściu: zapisz w logu All clear.
  2. W Turret napisz SetState(IState next): wywołaj Exit poprzedniego stanu, a następnie Enter nowego.
  3. Aktualizuj stan alarmu, gdy gracz jest w zasięgu range, a w przeciwnym razie skanuj, po czym aktualizuj bieżący stan.

Naciśnij „Graj” i podejdź blisko. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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()
    {
    }
}

Wszystkie lekcje w sekcji Architektura gier w Unity

Poćwicz samodzielnie: Edytor online Unity