250416 TIL

박소희·2025년 4월 16일

Unity_7기

목록 보기
70/94

NPC 행동 패턴

시야 내로 들어오면 의심 수치 상승 -> 행동 반응 없음
의심 수치 맥스 -> 경계 발동 ->최소 경계 시간동안 지속형 행동반응 시작
경계 시작 시작 (플레이어 안) 최소가 지나기전에 플레이어 밖
-> 최소 시간까지는 행동을 함
다시 플레이어가 들어올때마다 경계 시간 초기화
연속으로 최대 경계 시간동안 머무를 시 발동형 행동

    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); // 최소 경계 시간 지나면 중단
            }
        }
    }

0개의 댓글