시야 내로 들어오면 의심 수치 상승 -> 행동 반응 없음
의심 수치 맥스 -> 경계 발동 ->최소 경계 시간동안 지속형 행동반응 시작
경계 시작 시작 (플레이어 안) 최소가 지나기전에 플레이어 밖
-> 최소 시간까지는 행동을 함
다시 플레이어가 들어올때마다 경계 시간 초기화
연속으로 최대 경계 시간동안 머무를 시 발동형 행동
public override void Update()
{
if (IsPlayerInSight()) // 시야 내
{
if (!isPlayerInSight)
{
isPlayerInSight = true;
lostSightTimer = 0f;
stateMachine.npc.CurAlertTime = 0f; // 경계 시간 초기화
}
stateMachine.npc.CurAlertTime += Time.deltaTime; // 경계 시간 카운트
Debug.Log("지속형 시작");
ContiActionByType(); // 지속형 행동
if (stateMachine.npc.CurAlertTime >= stateMachine.npc.MaxAlertTime && !isTriggered)
{
TriggerActionByType(); // 최대 경계 시간 초과 시 발동형 행동
}
}
else // 시야 밖
{
if (isPlayerInSight)
{
isPlayerInSight = false;
lostSightTimer = 0f;
}
lostSightTimer += Time.deltaTime;
// 최소 경계 시간 동안 지속형 행동
if (lostSightTimer < stateMachine.npc.MinAlertTime) ContiActionByType();
else
{
isAlert = false;
Debug.Log("지속형 끝");
stateMachine.ChangeState(stateMachine.AlertState); // 최소 경계 시간 지나면 중단
}
}
}