내일배움캠프/TIL

[내배캠][Unity6기][TIL] NavMesh 트러블슈팅

binary는 호남선 2024. 12. 9. 20:58

드디어 인간의 부자연스러운 움직임 버그가 해결되었다!

원인은 NavMesh 컴포넌트로 인해 풀에서 다시 활성화한 객체의 위치가 초기화가 되지 않아서였다.

NavMesh agent 컴포넌트가 활성화된 상태에서는 해당 컴포넌트를 가지고 있는 게임오브젝트의 transform을 설정해도 그 위치로 움직이지 않는다.

그래서 컴포넌트를 비활성화하고 위치를 초기화했다가 다시 활성화해주어야 한다.

죄없는 트리구조만 삭제되고... FSM으로 수정했지만 막상 수정해보니 이쪽이 현재 상태에 적합한 것 같아 이대로 진행하려고 한다.

    private void OnEnable()
    {
        // 초기화 설정
        Agent.enabled = false;
        transform.position = SpawnPoint.position;   // 시작 위치 설정
        Agent.enabled = true;
        Agent.ResetPath();  // 경로 초기화
        StateMachine.ChangeState(WalkHumanState);   // 걷는 상태로 전환
    }

위와 같이 설정해주니 잘 동작하고 있다.