Unity에서 게임 오브젝트는
Nav Mesh Agent 컴포넌트를 이용해 NavMesh가 있는 씬을
손쉽게 탐색할 수 있습니다.
여기 유니티에 씬이 하나 있습니다.
씬은 이미 NavMesh를 Bake해 놓았습니다.
또한 씬에는 빈 게임 오브젝트가 있고
이것은 탐색 목표가 될 겁니다.
마지막으로, Nav Mesh Agent를 적용할
Capsule이 있습니다.
Capsule에는 SampleAgentScript가 붙어 있습니다.
이 스크립트에는 public 변수 Target이 있고
이 변수는 이미 Target이라는
빈 게임 오브젝트에 설정되어 있습니다.
Nav Mesh Agent를 추가하려면
Inspector 뷰에서 Add Component 버튼을 클릭하고
이어서
[Navigation]-[NavMesh Agent]를 선택합니다.
에이전트는 값을 수정하여 행동 양상을 변경할 수 있는
여러 설정들을 가지고 있습니다.
Radius 은 에이전트의 반경을 나타냅니다.
Speed는 에이전트의 최고 속도입니다.
Acceleration은 에이전트가 얼마나 빨리 가속할 수 있는지
지정합니다.
Angular Speed는 에이전트가 얼마나 빨리
회전할 수 있는지 지정합니다.
Stopping Distance 속성은
에이전트가 표적을 앞두고
속도를 늦추기 시작하는 거리입니다.
Auto Traverse Off Mesh Links는
에이전트가
Off Mesh Links를 자동으로 사용할지를 지정합니다.
Off Mesh Links에 관해 자세한 사항은
아래 링크된 학습 자료를 참고하십시오.
Auto Braking은
에이전트가 목적지에 접근하면 자동으로 제동하는지 지정합니다.
이것을 체크해 두면 에이전트가
표적을 지나쳐가지 않도록 방지합니다.
Auto Repath를 체크하면
현재의 경로가 유효하지 않게 되었을 때
에이전트가 경로를 재구축합니다.
Height 속성은 에이전트의 높이입니다,
Base Offset은
에이전트 콜라이더의 세로 오프셋입니다.
Obstacle Avoidance Type에는
여러 가지 옵션이 있습니다.
회피의 품질 수준이 높으면 회피가 더 정확합니다.
회피의 품질 수준이 낮으면 회피가 효율적입니다.
Avoidance Priority는
탐색할 때 어느 에이전트가 우선순위를 가지는지 결정합니다.
우선순위가 높은 에이전트가 낮은 번호를 가져야 합니다.
마지막으로 NavMesh Walkable 속성은
에이전트가 이동할 수 있는
내비게이션 레이어를 명시합니다.
내비게이션 레이어에 관해 자세한 사항은
아래 링크된 NavMesh 베이킹 강좌를 참고하십시오.
한 가지 짚고 넘어가야 할 것은,
이런 속성들을 변경하여
넓은 범위의 각종 효과를 얻을 수는 있지만,
대부분 상황에서는 기본 속성에서도 잘 돌아간다는 것입니다.
Nav Mesh Agent 컴포넌트를
생성하고 설정했으면
이제 어디로 갈 것인지 알려주기만 하면 됩니다.
SampleAgentScript에는
NavMeshAgent형 변수
agent가 선언되어 있군요.
Start 메소드에서는 NavMeshAgent를 참조하고
GetComponent 함수를 이용해
이것을 agent 변수에 보관합니다.
에이전트에게 어디로 갈지 알려주려면
NavMeshAgent 클래스의
SetDestination 메소드를 사용합니다.
이것은 단일 vector3 함수입니다.
그럼 SetDestination 메소드를 호출할 텐데,
Agent.SetDestination을 입력하고
괄호 안에
target.position을 입력합니다.
에이전트에게 타겟 게임 오브젝트가
있는 곳으로 이동하라고 알려주는 것입니다.
Unity로 돌아와서 씬을 실행해 보겠습니다.
Capsule 게임 오브젝트가 움직이기 시작하여
레벨에서 이동하는 것을 볼 수 있습니다.
Capsule 이 타겟 게임 오브젝트에 당도하면
멈추게 될 것입니다.