Version: 2020.1
고급 내비메시 베이크 설정
내비메시 장애물 생성

내비메시 에이전트 생성

게임 레벨의 내비메시를 베이크한 경우 씬 안에서 이동할 캐릭터를 생성합니다. 실린더로 프로토타입 에이전트를 빌드한 뒤 움직여 보겠습니다. 이 작업은 NavMesh Agent 컴포넌트와 간단한 스크립트를 통해 이루어집니다.

먼저 캐릭터를 생성합니다.

  1. 원기둥을 생성합니다. 게임 오브젝트(GameObject) > 3D 오브젝트(3D Object) > 원기둥(Cylinder).
  2. 디폴트 원기둥 크기(높이 2와 반경 0.5)는 휴머노이드 형태의 에이전트에 적합하므로 원기둥 형태로 둡니다.
  3. 내비메시 에이전트 컴포넌트를 추가합니다. 컴포넌트(Component) > 내비게이션(Navigation) > 내비메시 에이전트(NavMesh Agent).

이제 간단한 내비메시 에이전트를 생성했으며 커맨드를 내릴 수 있습니다.

내비메시 에이전트로 실험을 시작하려면 캐릭터 크기와 속도에 맞춰 크기를 조정해야 합니다.

내비메시 에이전트 컴포넌트가 경로 탐색과 캐릭터의 움직임 조절까지 다룹니다. 스크립트에서 내비게이션으로 원하는 목표 포인트를 설정하면 내비메시 에이전트가 나머지 항목을 자동으로 처리합니다.

    // MoveTo.cs
        using UnityEngine;
        using UnityEngine.AI;
    
        public class MoveTo : MonoBehaviour {
       
           public Transform goal;
       
           void Start () {
              NavMeshAgent agent = GetComponent<NavMeshAgent>();
              agent.destination = goal.position; 
           }
        }

다음으로 간단한 스크립트를 빌드하여 또 다른 게임 오브젝트로 지정된 목표와 목표로 설정된 구체에 캐릭터를 보낼 수 있습니다.

  1. C# 스크립트(MoveTo.cs)를 생성하고 위의 스크립트로 콘텐츠를 작성합니다.
  2. 생성한 캐릭터에 MoveTo 스크립트를 할당합니다.
  3. sphere를 생성하여 에이전트가 도달할 목표로 만듭니다.
  4. 캐릭터에서 구체를 NavMesh Surface에 가까운 위치로 옮깁니다.
  5. 캐릭터를 선택하고 MoveTo 스크립트를 지정한 뒤 구체를 Goal 프로퍼티에 할당합니다.
  6. Play 버튼을 누릅니다. 에이전트가 구체의 위치로 이동하는 것을 볼 수 있습니다.

즉, 스크립트에서 NavMesh Agent 컴포넌트의 레퍼런스를 가지고 에이전트를 움직이도록 설정하려면 에이전트의 destination 프로퍼티로 포지션을 할당합니다. 내비게이션 방법에서 내비메시 에이전트로 일반적인 게임플레이 시나리오 해결법에 대한 다양한 예제를 볼 수 있습니다.

추가 정보

고급 내비메시 베이크 설정
내비메시 장애물 생성