1 00:00:00,361 --> 00:00:03,180 Unity에서 게임 오브젝트는 2 00:00:03,180 --> 00:00:05,180 Nav Mesh Agent 컴포넌트를 이용해 NavMesh가 있는 씬을 3 00:00:05,180 --> 00:00:07,180 손쉽게 탐색할 수 있습니다. 4 00:00:08,527 --> 00:00:10,527 여기 유니티에 씬이 하나 있습니다. 5 00:00:10,527 --> 00:00:13,137 씬은 이미 NavMesh를 Bake해 놓았습니다. 6 00:00:14,358 --> 00:00:16,973 또한 씬에는 빈 게임 오브젝트가 있고 7 00:00:16,973 --> 00:00:19,327 이것은 탐색 목표가 될 겁니다. 8 00:00:21,088 --> 00:00:23,715 마지막으로, Nav Mesh Agent를 적용할 9 00:00:23,715 --> 00:00:25,715 Capsule이 있습니다. 10 00:00:26,148 --> 00:00:29,717 Capsule에는 SampleAgentScript가 붙어 있습니다. 11 00:00:30,286 --> 00:00:33,008 이 스크립트에는 public 변수 Target이 있고 12 00:00:33,008 --> 00:00:35,880 이 변수는 이미 Target이라는 13 00:00:35,880 --> 00:00:37,880 빈 게임 오브젝트에 설정되어 있습니다. 14 00:00:38,842 --> 00:00:40,842 Nav Mesh Agent를 추가하려면 15 00:00:40,842 --> 00:00:43,111 Inspector 뷰에서 Add Component 버튼을 클릭하고 16 00:00:43,111 --> 00:00:45,409 이어서 17 00:00:45,409 --> 00:00:47,983 [Navigation]-[NavMesh Agent]를 선택합니다. 18 00:00:50,168 --> 00:00:52,168 에이전트는 값을 수정하여 행동 양상을 변경할 수 있는 19 00:00:52,168 --> 00:00:54,835 여러 설정들을 가지고 있습니다. 20 00:00:55,438 --> 00:00:58,580 Radius 은 에이전트의 반경을 나타냅니다. 21 00:00:58,580 --> 00:01:02,183 Speed는 에이전트의 최고 속도입니다. 22 00:01:03,212 --> 00:01:05,212 Acceleration은 에이전트가 얼마나 빨리 가속할 수 있는지 23 00:01:05,212 --> 00:01:07,029 지정합니다. 24 00:01:07,395 --> 00:01:09,943 Angular Speed는 에이전트가 얼마나 빨리 25 00:01:09,943 --> 00:01:11,943 회전할 수 있는지 지정합니다. 26 00:01:12,769 --> 00:01:14,769 Stopping Distance 속성은 27 00:01:14,769 --> 00:01:16,769 에이전트가 표적을 앞두고 28 00:01:16,769 --> 00:01:19,368 속도를 늦추기 시작하는 거리입니다. 29 00:01:21,301 --> 00:01:23,824 Auto Traverse Off Mesh Links는 30 00:01:23,824 --> 00:01:25,824 에이전트가 31 00:01:25,824 --> 00:01:28,482 Off Mesh Links를 자동으로 사용할지를 지정합니다. 32 00:01:29,328 --> 00:01:31,328 Off Mesh Links에 관해 자세한 사항은 33 00:01:31,328 --> 00:01:33,666 아래 링크된 학습 자료를 참고하십시오. 34 00:01:35,521 --> 00:01:37,521 Auto Braking은 35 00:01:37,521 --> 00:01:40,128 에이전트가 목적지에 접근하면 자동으로 제동하는지 지정합니다. 36 00:01:40,733 --> 00:01:43,155 이것을 체크해 두면 에이전트가 37 00:01:43,155 --> 00:01:45,155 표적을 지나쳐가지 않도록 방지합니다. 38 00:01:46,405 --> 00:01:48,405 Auto Repath를 체크하면 39 00:01:48,405 --> 00:01:50,405 현재의 경로가 유효하지 않게 되었을 때 40 00:01:50,405 --> 00:01:52,926 에이전트가 경로를 재구축합니다. 41 00:01:53,933 --> 00:01:57,088 Height 속성은 에이전트의 높이입니다, 42 00:01:57,685 --> 00:02:00,555 Base Offset은 43 00:02:00,555 --> 00:02:02,555 에이전트 콜라이더의 세로 오프셋입니다. 44 00:02:04,264 --> 00:02:06,209 Obstacle Avoidance Type에는 45 00:02:06,209 --> 00:02:08,209 여러 가지 옵션이 있습니다. 46 00:02:08,209 --> 00:02:11,781 회피의 품질 수준이 높으면 회피가 더 정확합니다. 47 00:02:11,781 --> 00:02:15,007 회피의 품질 수준이 낮으면 회피가 효율적입니다. 48 00:02:16,674 --> 00:02:18,674 Avoidance Priority는 49 00:02:18,674 --> 00:02:21,421 탐색할 때 어느 에이전트가 우선순위를 가지는지 결정합니다. 50 00:02:22,018 --> 00:02:25,473 우선순위가 높은 에이전트가 낮은 번호를 가져야 합니다. 51 00:02:26,740 --> 00:02:29,847 마지막으로 NavMesh Walkable 속성은 52 00:02:29,847 --> 00:02:31,847 에이전트가 이동할 수 있는 53 00:02:31,847 --> 00:02:34,082 내비게이션 레이어를 명시합니다. 54 00:02:34,791 --> 00:02:37,459 내비게이션 레이어에 관해 자세한 사항은 55 00:02:37,459 --> 00:02:41,404 아래 링크된 NavMesh 베이킹 강좌를 참고하십시오. 56 00:02:42,446 --> 00:02:44,446 한 가지 짚고 넘어가야 할 것은, 57 00:02:44,446 --> 00:02:46,030 이런 속성들을 변경하여 58 00:02:46,030 --> 00:02:48,460 넓은 범위의 각종 효과를 얻을 수는 있지만, 59 00:02:48,460 --> 00:02:52,408 대부분 상황에서는 기본 속성에서도 잘 돌아간다는 것입니다. 60 00:02:53,783 --> 00:02:55,783 Nav Mesh Agent 컴포넌트를 61 00:02:55,783 --> 00:02:57,783 생성하고 설정했으면 62 00:02:57,783 --> 00:03:00,473 이제 어디로 갈 것인지 알려주기만 하면 됩니다. 63 00:03:02,699 --> 00:03:05,366 SampleAgentScript에는 64 00:03:05,366 --> 00:03:07,824 NavMeshAgent형 변수 65 00:03:07,824 --> 00:03:12,181 agent가 선언되어 있군요. 66 00:03:13,848 --> 00:03:17,631 Start 메소드에서는 NavMeshAgent를 참조하고 67 00:03:17,631 --> 00:03:20,092 GetComponent 함수를 이용해 68 00:03:20,092 --> 00:03:23,043 이것을 agent 변수에 보관합니다. 69 00:03:24,370 --> 00:03:26,846 에이전트에게 어디로 갈지 알려주려면 70 00:03:26,846 --> 00:03:29,445 NavMeshAgent 클래스의 71 00:03:29,445 --> 00:03:31,910 SetDestination 메소드를 사용합니다. 72 00:03:32,487 --> 00:03:35,302 이것은 단일 vector3 함수입니다. 73 00:03:35,996 --> 00:03:40,526 그럼 SetDestination 메소드를 호출할 텐데, 74 00:03:40,526 --> 00:03:44,807 Agent.SetDestination을 입력하고 75 00:03:46,057 --> 00:03:49,647 괄호 안에 76 00:03:49,647 --> 00:03:51,885 target.position을 입력합니다. 77 00:03:52,411 --> 00:03:54,900 에이전트에게 타겟 게임 오브젝트가 78 00:03:54,900 --> 00:03:56,900 있는 곳으로 이동하라고 알려주는 것입니다. 79 00:03:59,066 --> 00:04:01,829 Unity로 돌아와서 씬을 실행해 보겠습니다. 80 00:04:02,496 --> 00:04:05,785 Capsule 게임 오브젝트가 움직이기 시작하여 81 00:04:05,785 --> 00:04:08,343 레벨에서 이동하는 것을 볼 수 있습니다. 82 00:04:09,079 --> 00:04:12,195 Capsule 이 타겟 게임 오브젝트에 당도하면 83 00:04:12,195 --> 00:04:14,195 멈추게 될 것입니다.