Menu
CoddyTech

Состояние тревоги

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 36 из 64.

challenge icon

Задание

Средне

Переведи турель в состояние тревоги, когда игрок подходит близко.

  1. В TurretStates.cs напиши AlertState, передав ей голову и игрока. В Enter: установи для головы цвет Color.red, выведи в журнал Intruder!. В Tick: поверни голову к игроку вокруг оси y. В Exit: выведи в журнал All clear.
  2. В Turret напиши SetState(IState next): сначала вызови Exit старого состояния, затем Enter нового.
  3. В методе Update переключайся в состояние тревоги, когда игрок находится в пределах range, а в противном случае выполняй сканирование, затем вызывай Tick текущего состояния.

Нажми «Играть» и подойди близко. Затем нажми «Проверить».

Попробуйте сами

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

Все уроки раздела Архитектура игр в Unity

Потренируйтесь самостоятельно: Песочница Unity