Menu
CoddyTech

警戒状態

CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 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. 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プレイグラウンド