경계 상태
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 64개 중 36번째.
챌린지
중급플레이어가 가까이 오면 포탑에 경보를 울리세요.
TurretStates.cs에서 머리와 플레이어를 전달받는AlertState를 작성하세요. 진입 시 머리의 색을Color.red로 설정하고Intruder!를 로그에 남기세요. 틱마다 y축을 기준으로 플레이어를 향하게 하세요. 종료 시All clear를 로그에 남기세요.Turret에서SetState(IState next)를 작성하세요. 이전 상태의 Exit를 호출한 다음 새 상태의 Enter를 호출합니다.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 플레이그라운드