-
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 이 타겟 게임 오브젝트에 당도하면
-
멈추게 될 것입니다.