Develog
로그인

[Unity] NavMesh.Move()

muchan
muchan
∙2026년 5월 28일∙조회 9
Unity
유니티 공부 기록
본문 로딩 중...
이전 글[Unity] NavMesh Obstacle
다음 글[Unity] 공간 분할 기법
0
muchan

게임 버그도 콘텐츠입니다.

새 글이 올라오면 Develog 알림으로 알려드려요

댓글 0

NavMeshAgent에는 에이전트를 움직이는데 SetPath와 Move 함수를 사용할 수 있다.

차이점

기능Move()SetPath()
경로 탐색없음있음
이동 방식직접 이동경로 기반 이동
장애물 우회없음가능
자동 회전없음있음
용도수동 이동AI 이동
입력값이동 벡터NavMeshPath
느낌캐릭터 컨트롤러AI 네비게이션

평소 SetPath만 써서 SetPath로 이동시키려다가 동작이 너무 부자연스러워서 찾아보니 Move라는 함수가 있었다.

현재 프로젝트에서 동물을 때렸을 때 플레이어의 반대 방향으로 도망가는 동물을 만들려고 했는데

SetPath로 작성하니 로직이 이상하게 동작했다.

하지만 Move 함수를 사용하여 방향을 수동으로 정해줬고 자연스럽게 플레이어 반대방향으로 움직이도록 구현했다.

csharp
protected override void OnStateChanged(AnimalState newState)
    {
        switch (newState)
        {
            case AnimalState.Idle:
                Animator.SetInteger("State", 0);
                break;
            case AnimalState.Roam:
                Animator.SetInteger("State", 1);
                break;
            case AnimalState.Flee:
                Animator.SetInteger("State", 2);
                Agent.ResetPath();
                break;
        }
    }

여기서 AnimalState.Flee가 도망치는 상태인데 이때 꼭 ResetPath로 그 전 경로를 리셋해주고 Move를 호출해야한다

안그러면 이상하게 낑기는 현상이 발생한다..

https://docs.unity3d.com/ScriptReference/AI.NavMeshAgent.Move.html

공식 문서 안보고 뭐가 문제지 하다가 공식 문서에 적혀있는 걸 보고

앞으로 공식 문서를 꼼꼼히 봐야겠다 다짐했다

If the agent has a path it will be adjusted!

 

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.

관련 글

[Unity] 제네릭의 컴파일

[Unity] 제네릭의 컴파일

ㅇㅇ

10월 7일42
[Unity] 제네릭과 가변성(variance)

[Unity] 제네릭과 가변성(variance)

제네릭과 가변성

10월 6일821
[Unity] IEnumerator 개요

[Unity] IEnumerator 개요

코루틴에이저포에버

10월 6일4
[Unity] 제네릭의 컴파일
Unity

NEW[Unity] 제네릭의 컴파일

ㅇㅇ

KYO
KYO
420
KYO
KYO
∙10월 7일
420
[Unity] 제네릭과 가변성(variance)
Unity

[Unity] 제네릭과 가변성(variance)

제네릭과 가변성

KYO
KYO
821
KYO
KYO
∙10월 6일
821
[Unity] IEnumerator 개요
Unity

[Unity] IEnumerator 개요

코루틴에이저포에버

KYO
KYO
400
KYO
KYO
∙10월 6일
400