Menu
CoddyTech

경계 상태

Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 64개 중 36번째.

challenge icon

챌린지

중급

플레이어가 가까이 오면 포탑에 경보를 울리세요.

  1. TurretStates.cs에서 머리와 플레이어를 전달받는 AlertState를 작성하세요. 진입 시 머리의 색을 Color.red로 설정하고 Intruder!를 로그에 남기세요. 틱마다 y축을 기준으로 플레이어를 향하게 하세요. 종료 시 All clear를 로그에 남기세요.
  2. Turret에서 SetState(IState next)를 작성하세요. 이전 상태의 Exit를 호출한 다음 새 상태의 Enter를 호출합니다.
  3. range 안에 있으면 경보 상태로 전환하고, 그렇지 않으면 스캔 상태로 전환한 다음 현재 상태를 틱 처리하세요.

‘플레이’를 누르고 가까이 걸어가세요. 그런 다음 ‘확인’을 누르세요.

직접 해보기

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 플레이그라운드