개요
언리얼 엔진의 내비게이션 시스템(Navigation System) 은 인공 지능 에이전트에게 경로 탐색 기능을 제공합니다. 시작 위치와 목적지 사이의 경로를 찾기 위해 내비게이션 메시(Navigation Mesh)가 월드 콜리전 지오메트리에서 생성됩니다.
디폴트 세팅에서는 내비게이션 메시를 타일로 분할하므로 일부분만 다시 만들 수 있습니다. 결과 메시는 폴리곤으로 구성되며 각 폴리곤에 비용이 할당됩니다. 최적의 경로를 결정하는 동안 경로 찾기 알고리즘은 목적지까지의 비용이 가장 낮은 경로를 찾으려고 시도합니다.
내비게이션 시스템에는 다양한 컴포넌트와 세팅이 포함되어, 이러한 세팅으로 폴리곤 비용 등 내비게이션 메시의 생성 방식을 수정할 수 있습니다. 이는 에이전트가 레벨 내에서 이동하는 방식에 영향을 미칩니다.
목표
이 퀵스타트 가이드에서는 내비게이션 모디파이어 볼륨(Navigation Modifier Volumes) , 내비게이션 프록시 링크(Navigation Proxy Links) , 런타임에서 내비게이션에 영향을 미치는 블루프린트 액터를 사용하여 내비게이션 메시를 수정하는 방법을 알아봅니다.
목적
-
내비게이션 모디파이어 볼륨을 사용하여 특정 영역의 내비게이션 메시 비용을 변경합니다.
-
내비게이션 프록시 링크를 사용하여 다른 방식으로는 액세스가 불가능한 두 영역을 연결합니다.
-
스마트 프록시 링크(Smart Proxy Link)를 사용하여 에이전트가 플랫폼 사이를 점프하며 목표로 향하게 합니다.
-
움직이는 블루프린트 액터를 생성하여 내비게이션 메시를 런타임에 동적으로 재생성하는 방법을 알아봅니다.
1 - 필수 설정
내비게이션 시스템 수정 준비 가이드 를 따르거나 전체 샘플 프로젝트를 다운로드하고, LevelModNavigation_0 레벨을 연 뒤에 다음 섹션으로 넘어갑니다.
2 - 내비게이션 모디파이어 볼륨 사용하기
내비게이션 모디파이어 볼륨(Navigation Modifier Volumes) 은 볼륨 셰이프를 사용하여 내비게이션 메시에 내비게이션 영역 클래스(Navigation Area Class)를 적용합니다. 내비게이션 영역 클래스를 사용하여 볼륨 스페이스 내의 폴리곤 프로퍼티를 변경하고 이동 비용을 수정할 수 있습니다.
폴리곤 프로퍼티는 내비게이션 모디파이어 볼륨의 적절한 영역 클래스(Area Class) 에 의해 정의됩니다. 이 클래스는 내비게이션 메시에 가해지는 이펙트를 결정합니다. 내장 클래스를 사용하여 메시를 수정하거나 커스텀 구현을 생성할 수 있습니다.
우선 내장 클래스를 사용하여 레벨 내에서 내비게이션 메시를 수정하겠습니다.
-
액터 배치(Place Actors) 패널에서 내비 모디파이어 볼륨(Nav Modifier Volume) 을 검색합니다. 내비 모디파이어 볼륨 액터를 레벨로 드래그합니다. 기본적으로 볼륨 내에는 내비게이션 메시가 생성되어 있지 않습니다.
-
볼륨을 이동 하고 스케일 조절 하여 아래와 같은 영역을 덮습니다. 이제 에이전트가 하단의 스피어 에 도달하려면 볼륨을 우회하여 레벨 왼쪽으로 이동해야 합니다. 이 영역으로 게임 내에서 에이전트가 통과하지 못하는 장애물을 나타낼 수 있습니다.
-
위 단계를 반복하여 맵 반대편에 영역을 하나 더 생성합니다. 볼륨의 스케일을 조절할 때 양쪽에 에이전트가 이동할 공간을 남깁니다.
-
내비 모디파이어 볼륨(Nav Modifier Volume) 을 레벨로 하나 더 드래그합니다. 디테일(Details) 패널로 이동하여 영역 클래스(Area Class) 옆의 드롭다운 을 클릭합니다. 목록에서 NavArea_Obstacle 클래스를 선택합니다. 이 내장 클래스는 볼륨 내 영역에 디폴트 값(녹색의 NavArea_Default ) 대비 높은 내비게이션 비용을 할당합니다. 그러면 에이전트는 목적지까지 가는 더 저렴한 경로를 찾지 못하는 한 해당 영역을 회피합니다.
-
볼륨을 두 번 복제해서 스피어 주변에 다음과 같은 모양을 만듭니다. 그러면 스피어에 도달하려는 에이전트는 볼륨을 우회하여 이동하게 됩니다.
볼륨을 하나 더 추가해서 스피어 주변 영역을 볼륨으로 완전히 둘러싸더라도, 이 볼륨은 유효한 경로이므로 에이전트는 목적지에 도달할 것입니다. 반면에 볼륨의 영역 클래스를 NavArea_Null로 변경하면 에이전트는 타깃으로 가는 적합한 경로를 찾지 못하므로 목적지에 도달하지 못할 것입니다. NavArea_Null은 비용을 무한대로 적용하여 영향받는 영역 내에 내비게이션 메시가 생성되지 않게 하기 때문입니다.
-
시뮬레이트(Simulate) 를 클릭하고 에이전트가 스피어 사이로 어떻게 움직이는지 확인합니다. 이는 내비게이션 메시가 생성된 방식에 따라 변경 사항이 어떻게 영향받는지 보여줍니다.
섹션 결과
이 섹션에서는 내비 모디파이어 볼륨(Nav Modifier Volume) 을 사용하여 내비게이션 메시가 생성되는 방식을 변경했습니다. 또한 언리얼 엔진에서 사용 가능한 내장 영역 클래스도 알아보았습니다.
사용 가능한 내비 모디파이어 볼륨 영역 클래스
| 영역 클래스 | 설명 |
|---|---|
| NavArea_Default | 볼륨 내 영역과 내비게이션 메시에 기본적으로 동일한 내비게이션 비용을 할당합니다. |
| NavArea_LowHeight | 에이전트가 지나가지 못하게 막는 낮은 높이가 있는 이동 조건에 일치하는 영역을 나타냅니다. 내비게이션 메시는 이 볼륨 내에 내비게이션 데이터를 생성하지 않습니다. |
| NavArea_Null | 볼륨 내의 빈 영역을 나타냅니다. 내비게이션 메시는 이 볼륨 내에 내비게이션 데이터를 생성하지 않습니다. |
| NavArea_Obstacle | 볼륨 내 영역에 높은 내비게이션 비용을 할당합니다. |
3 - 내비게이션 링크 프록시 사용하기
내비게이션 링크 프록시(Navigation Link Proxy) 는 내비게이션 경로가 직접적으로 이어지지 않는 두 내비게이션 메시 영역을 연결합니다. 경로를 검색하는 동안 에이전트는 목적지에 도달하기 위한 추가 연결로 내비게이션 링크 프록시를 사용할 수 있습니다.
내비게이션 링크 프록시는 일반적으로 분리된 내비게이션 메시를 연결하는 다리를 생성하고, 목적지로 가는 연속된 경로를 이용할 수 없을 때 에이전트가 목적지를 향해 플랫폼에서 뛰어내리거나 점프하도록 지시하는 데 사용됩니다.
두 영역을 연결하는 다리 생성하기
-
첫 번째 내비 모디파이어 볼륨(Nav Modifier Volume) 을 선택하고 아래와 같이 길이가 바닥 전체와 같아지도록 크기를 조정합니다. 그러면 에이전트가 하단의 구체에 도달하지 못하도록 차단합니다.
-
액터 배치(Place Actors) 패널에서 큐브(Cube) 액터를 레벨로 드래그합니다. X = 4, Y = 1, Z =0.2로 스케일을 조절하고 아래와 같이 배치합니다.
-
아래와 같이 큐브 를 복제하고 레벨 반대편으로 이동합니다.
이 큐브 액터들은 레벨 내의 내비게이션 링크 프록시를 시각적으로 나타내는 역할입니다. 내비게이션 링크 프록시와 반드시 함께 사용할 필요는 없습니다.
-
액터 배치(Place Actors) 패널에서 Nav Link Proxy 를 검색합니다. Nav Link Proxy 액터를 레벨로 드래그합니다.
-
Nav Link Proxy 를 선택한 뒤 PointLinks[0].Left 핸들을 클릭하고 이동해서 메시 한쪽에 배치합니다. PointLinks[0].Right 핸들을 클릭하고 이동해서 아래와 같이 메시 반대쪽에 배치합니다.
Nav Link Proxy가 내비게이션 메시의 표면과 연결되지 않으면 녹색 화살표가 사라집니다.
(convert:false)연결을 생성했으니 사이에 내비게이션 데이터가 없더라도 에이전트가 Nav Link Proxy 를 통해 이동할 수 있습니다.
-
Nav Link Proxy 를 선택한 뒤 디테일(Details) 패널에서 Point Links 아래의 0 라벨이 붙은 섹션을 펼치고 Direction 드롭다운을 찾습니다. Direction 은 Both Ways , Left to Right , Right to Left 중에서 선택할 수 있습니다. 이 예시에서는 Left to Right 를 선택합니다.
-
Nav Link Proxy 를 복제하여 레벨 반대편으로 이동합니다. 이 예시에서는 Direction 을 Right to Left 로 설정합니다.
-
시뮬레이트(Simulate) 를 클릭하고 에이전트가 왼쪽 측면으로 들어가 오른쪽 측면으로 나와서 스피어 에 도달하는 것을 확인합니다.
섹션 결과
Nav Link Proxy 를 사용하여 이용 가능한 경로가 없었던 내비게이션 메시 의 두 영역을 연결했습니다. Nav Link Proxy 를 Both Ways , Left to Right , Right to Left 등 다양한 방향으로 구성하는 방법도 알아보았습니다.
내비게이션 링크 프록시를 사용하여 에이전트가 플랫폼에서 떨어지게 하기
-
Nav Link Proxy 를 레벨로 하나 더 드래그하여 아래와 같이 높은 플랫폼 끝에 배치합니다.
-
PointLinks[0].Left 를 선택하고 플랫폼 끝에 배치한 뒤 PointLinks[0].Right 를 선택하고 바닥과 겹치도록 아래에 배치합니다.
(convert:false) -
디테일(Details) 패널로 이동하여 Point Links 아래의 0 라벨이 붙은 섹션을 펼치고 Direction 을 Left to Right 로 설정합니다.
-
시뮬레이트(Simulate) 를 클릭하면 이제 에이전트가 플랫폼에서 떨어져서 목적지에 도달하는 것을 확인할 수 있습니다.
섹션 결과
이 섹션에서는 Nav Link Proxy 를 사용하여 에이전트가 플랫폼에서 떨어져서 목적지에 도달하게 했습니다.
Nav Link Proxy를 사용하여 에이전트가 목적지로 점프하게 하기
이 섹션에서는 Nav Link Proxy 의 스마트 링크(Smart Link) 를 사용하여 에이전트가 한 플랫폼에서 다른 플랫폼으로 점프하게 하겠습니다.
-
플랫폼 메시를 선택하고 Alt 를 누른 채 드래그하여 복제합니다.
-
아래와 같이 새 플랫폼의 크기를 조정하고 위로 이동합니다.
-
스피어 액터를 복제하여 플랫폼 위에 배치합니다.
-
콘텐츠 드로어(Content Drawer) 에서 우클릭하고 기본 에셋 생성(Create Basic Asset) 섹션의 블루프린트 클래스(Blueprint Class) 를 선택합니다.
-
부모 클래스 선택(Pick Parent Class) 창에서 모든 클래스(All Classes) 섹션으로 이동하여 화살표를 펼칩니다. Nav Link Proxy 를 검색하여 선택하고 선택(Select) 을 클릭합니다. 블루프린트를 BP_NavProxyLink 로 명명합니다.
-
BP_NavProxyLink 를 더블클릭하여 엽니다. 이벤트 그래프(Event Graph) 내에서 우클릭하여 이벤트 Receive Smart Link Reached(Event Receive Smart Link Reached) 를 검색하고 선택합니다.
-
이벤트 Receive Smart Link Reached 노드의 Agent 핀에서 드래그하여 Character 에 형변환(Cast to Character) 을 검색하고 선택합니다.
-
Character 에 형변환 노드의 As Character 핀에서 드래그하여 변수로 승격(Promote to variable) 을 선택합니다.
-
As Character 노드의 실행(execution) 핀에서 드래그하여 Suggest Projectile Velocity Custom Arc 를 검색하고 선택합니다.
-
As Character 노드의 파란색 핀에서 드래그하여 GetActorLocation 을 검색하고 선택합니다. GetActorLocation 노드의 Return Value 핀을 Suggest Projectile Velocity Custom Arc 노드의 Start Pos 핀에 연결합니다.
-
이벤트 Receive Smart Link Reached 노드의 Destination 핀에서 드래그하여 Suggest Projectile Velocity Custom Arc 노드의 End Pos 핀에 연결합니다.
-
As Character 변수를 이벤트 그래프(Event Graph) 로 드래그하고 Get As Character 를 선택합니다. As Character 노드에서 드래그하여 Launch Character 를 검색하고 선택합니다. XYOverride 및 ZOverride 체크박스를 활성화합니다.
-
Suggest Projectile Velocity Custom Arc 노드에서 드래그하여 Delay 를 검색하고 선택합니다. Duration 을 0.1로 설정합니다. Delay 노드의 Completed 핀을 Launch Character 노드에 연결합니다.
-
Suggest Projectile Velocity Custom Arc 노드의 Out Launch Velocity 핀에서 드래그하여 vector * float 를 검색하고 선택합니다.
-
Multiplication 노드의 노란색 핀을 Launch Character 노드의 Launch Velocity 핀에 연결합니다. 곱셈 노드의 녹색 핀을 우클릭하고 변수로 승격(Promote to variable) 을 선택합니다.
-
New Var 0 노드를 선택하고 디테일(Details) 패널에서 변수 이름을 JumpBoost 로 변경합니다. 기본값을 1 로 설정합니다. 아래와 같이 인스턴스 편집가능(Instance Editable) 체크박스를 활성화합니다.
-
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다.
-
BP_NPC_ModNavMesh 캐릭터를 레벨에서 선택하고 디테일(Details) 패널에서 타깃 목록(Target List) 옆의 더하기(Add) (+) 버튼을 클릭하여 새 엔트리를 추가합니다. 플랫폼에 추가한 마지막 스피어 액터를 검색하고 선택합니다.
-
아래와 같이 BP_NavProxyLink 블루프린트 액터를 플랫폼에 드래그하고 연결을 조정합니다.
-
BP_NavProxyLink 블루프린트 액터를 선택한 뒤 디테일(Details) 패널로 이동하여 Copy End Points from Simple Link to Smart Link 버튼을 클릭합니다. Smart Link Is Relevant 체크박스를 활성화합니다.
-
시뮬레이트(Simulate) 를 클릭하고 에이전트가 점프하여 마지막 스피어에 도달하는 것을 확인합니다.
내비게이션 링크 프록시는 근접한 내비게이션 메시 타일만 연결할 수 있습니다. RecastNavMesh-Default 액터를 선택하고 타일 바운드 그리기(Draw Tile Bounds) 체크박스를 활성화하여 타일을 시각화할 수 있습니다.
섹션 결과
이 섹션에서는 커스텀 내비 프록시 링크(Nav Proxy Link) 블루프린트를 생성하고 이를 사용하여 에이전트를 플랫폼으로 점프하게 하는 방법을 알아봤습니다.
4 - 런타임에서 내비게이션 메시 생성하기
언리얼 엔진에는 세 가지 내비게이션 메시 생성 모드가 있습니다.
| 생성 모드 | 설명 |
|---|---|
| Static | 내비게이션 메시가 오프라인에서 생성되고 레벨과 함께 저장됩니다. 내비게이션 메시는 런타임에서 로드되며 변경이 불가능합니다. |
| Dynamic | 내비게이션 메시가 오프라인에서 생성되고 레벨과 함께 저장되거나 런타임에서 만들어집니다. 런타임에서 내비게이션 메시가 사용하는 내비게이션 관련 데이터가 업데이트될 수 있고, 생성은 데이터 변경에 영향받은 타일에서 수행됩니다. |
| Dynamic Modifiers Only | 내비게이션 메시가 오프라인에서 생성되고 레벨과 함께 저장됩니다. 런타임에서는 내비게이션 영역, 내비게이션 링크, 다이내믹 오브젝트 등의 내비게이션 모디파이어(Navigation Modifier)만 비용 또는 블록 영역을 변경하여 기존 내비게이션 메시를 수정할 수 있습니다. 런타임에서 새로운 내비게이션 메시 표면은 생성되지 않습니다. 이 메서드는 내비게이션 메시가 콜리전 데이터를 캐시할 수 있게 함으로써 영향받는 타일의 프로세싱 비용을 최대 50% 낮춥니다. 고급 사용자가 장점과 한계를 신중하게 고려한 뒤 사용해야 하는 모드입니다. |
기본적으로 내비게이션 메시는 Static 으로 환경설정됩니다. 그러나 내비게이션 메시 생성을 런타임에서 변경할 수 있도록 다이내믹 모드 중 하나로 설정할 수도 있습니다.
런타임 생성 사용하기(Dynamic Modifiers Only)
-
런타임 생성(Runtime Generation) 세팅을 변경하려면 메뉴 바에서 세팅(Settings) > 프로젝트 세팅(Project Settings) 으로 이동합니다.
-
내비게이션 메시(Navigation Mesh) 세팅으로 이동한 후 런타임(Runtime) 섹션에서 Runtime Generation 드롭다운을 클릭합니다. 이 예시에서는 Dynamic Modifiers Only 를 선택합니다.
-
콘텐츠 드로어(Content Drawer) 에서 우클릭하고 기본 에셋 생성(Create Basic Asset) 섹션의 블루프린트 클래스(Blueprint Class) 를 선택합니다.
-
일반(Common) 섹션의 액터(Actor) 클래스를 선택합니다. 블루프린트를 BP_RotatingActor 로 명명합니다.
(convert:false)
-
BP_RotatingActor 블루프린트를 더블클릭하여 엽니다. +추가(+Add) 드롭다운을 클릭한 뒤 큐브(Cube) 를 검색하고 선택합니다. 큐브의 스케일을 X = 4, Y = 1.5, Z = 1로 조절합니다.
-
+추가(+Add) 드롭다운을 클릭한 뒤 Rotating Movement 를 검색하고 선택합니다.
(convert:false) -
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다.
-
BP_RotatingActor 블루프린트 액터를 레벨로 드래그하고 시뮬레이트(Simulate) 를 클릭합니다. 내비게이션 메시가 회전 메시와 함께 업데이트되지 않는 것을 확인할 수 있습니다. 이는 Dynamic Modifier Only 런타임 생성 모드가 NavModifier 컴포넌트를 갖는 액터에서만 작동하기 때문입니다.
(convert:false) -
BP_RotatingActor 블루프린트로 돌아가서 +추가(+Add) 드롭다운을 클릭합니다. Nav Modifier 를 검색하여 선택합니다.
(convert:false) -
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다. 시뮬레이트(Simualte) 를 클릭하여 차이를 확인합니다. 레벨에서 메시가 회전함에 따라 내비게이션 메시가 제대로 업데이트되는 것을 확인할 수 있습니다.
레벨에 새 내비게이션 메시가 생성되지는 않는다는 점에 주목하세요(생성 중인 파일은 빨간색으로 표시됩니다). 내비게이션 모디파이어는 기존 내비게이션 메시를 변경하기만 합니다.
섹션 결과
이 섹션에서는 런타임 생성 Dynamic Modifiers Only 를 사용하여 내비게이션 메시가 게임플레이 중에 재생성되게 하는 방법을 알아보았습니다. 또한 NavModifier 컴포넌트가 있는 단순 회전 블루프린트 액터로 테스트하고 결과를 확인했습니다.
런타임 생성 사용하기(Dynamic)
-
콘텐츠 드로어(Content Drawer) 에서 우클릭하고 기본 에셋 생성(Create Basic Asset) 섹션의 블루프린트 클래스(Blueprint Class) 를 선택합니다.
-
일반(Common) 섹션의 액터(Actor) 클래스를 선택합니다. 블루프린트를 BP_MovingActor 로 명명합니다.
(convert:false)
(convert:false) -
BP_MovingActor 블루프린트를 더블클릭하여 엽니다. +추가(+Add) 드롭다운을 클릭한 뒤 스피어(Sphere) 를 검색하고 선택합니다. 스피어의 스케일을 X = 2, Y = 2, Z = 2로 조절합니다.
(convert:false) -
이벤트 그래프(Event Graph) 에서 우클릭한 뒤 커스텀 이벤트 추가(Add Custom Event) 를 검색하고 선택합니다. 이벤트를 MoveForward 로 명명합니다. 이 단계를 반복하여 또 다른 이벤트 MoveBackwards 를 생성합니다.
-
MoveForward 노드에서 드래그하여 타임라인 추가(Add Timeline) 를 검색하고 선택합니다. 타임라인을 TM_MoveObject 로 명명합니다. MoveBackwards 노드를 TM_MoveObject 노드의 Reverse 핀에 연결합니다.
-
TM_MoveObject 노드를 더블클릭하여 엽니다. +트랙(+Track) 버튼을 클릭하여 새 Float 트랙을 생성합니다. 트랙을 Alpha 라고 명명합니다.
(convert:false) -
그래프에서 우클릭한 뒤 CurveFloat_1 에 키 추가(Add key to CurveFloat_1) 를 선택합니다. 시간(Time) = 0 및 값(Value) = 0 을 입력합니다.
-
이전 단계를 반복하고 시간 = 5 및 값 = 1 을 입력합니다.
-
스피어(Sphere) 컴포넌트를 이벤트 그래프(Event Graph) 에 드래그하여 노드를 생성합니다. 스피어 노드에서 드래그하여 SetRelativeLocation 을 검색하고 선택합니다.
-
TM_MoveObject 노드의 Update 핀을 SetRelativeLocation 노드에 연결합니다. SetRelativeLocation 노드의 New Location 핀을 우클릭하고 구조체 핀 분할(Split Struct Pin) 을 선택합니다.
-
SetRelativeLocation 노드의 New Location X 핀에서 드래그하여 Lerp 를 검색하고 선택합니다. TM_MoveObject 노드의 Alpha 핀을 Lerp 노드의 Alpha 핀에 연결합니다.
(convert:false)
-
Lerp 노드의 B 핀을 우클릭하여 변수로 승격(Promote to Variable) 을 선택합니다. 디테일(Details) 패널에서 변수 이름을 Distance 로 변경합니다. 인스턴스 편집가능(Instance Editable) 체크박스를 선택합니다.
-
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다. Distance 의 기본값을 1000 으로 설정합니다.
-
TM_MoveObject 타임라인의 Finished 핀에서 드래그하여 Delay 를 검색하고 선택합니다. Duration 을 1 로 설정합니다.
(convert:false) -
Delay 노드의 Completed 핀에서 드래그하여 Branch 를 검색하고 선택합니다.
(convert:false) -
Branch 노드의 Condition 핀을 우클릭하고 변수로 승격(Promote to Variable) 을 선택합니다. 디테일(Details) 패널로 이동하여 변수 이름을 Forward 로 변경합니다.
-
Forward 변수를 이벤트 그래프(Event Graph) 로 드래그한 뒤 Set Forward 를 선택합니다. Branch 의 True 핀을 Set Forward 노드에 연결합니다. Set Forward 노드에서 드래그하여 Move Backwards 를 검색하고 선택합니다.
-
Forward 변수를 이벤트 그래프(Event Graph) 로 드래그한 뒤 Set Forward 를 선택합니다. Branch 의 False 핀을 Set Forward 노드에 연결합니다. Set Forward 노드의 Forward 체크박스를 활성화 합니다. Set Forward 노드에서 드래그하여 MoveForward 를 검색하고 선택합니다.
-
이벤트 그래프(Event Graph) 에서 우클릭한 뒤 이벤트 BeginPlay(Event BeginPlay) 를 검색하고 선택합니다. Begin Play 이벤트 노드에서 드래그하여 MoveForward 를 검색하고 선택합니다.
-
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다. 아래에서 완성된 블루프린트를 볼 수 있습니다.
(convert:false) -
BP_MovingActor 블루프린트 액터를 레벨로 드래그하고 시뮬레이트(Simulate) 를 클릭합니다. 내비게이션 메시가 액터의 움직임과 함께 업데이트되지 않는 것을 확인할 수 있습니다.
(convert:false) -
세팅(Settings) > 프로젝트 세팅(Project Settings) 을 클릭하고 내비게이션 메시(Navigation Mesh) 세팅으로 이동합니다.
-
런타임(Runtime) 섹션에서 Runtime Generation 드롭다운을 클릭하고 Dynamic 을 선택합니다.
-
레벨로 돌아가서 시뮬레이트(Simulate) 를 클릭합니다. 이제 내비게이션 메시가 제대로 업데이트되는 것을 볼 수 있습니다.
이 섹션에서 사용한 예시는 내비게이션 메시의 런타임 생성을 지속적으로 강제하므로 연산 비용이 높습니다. 이 예시는 모범 사례를 나타내지 않으며, 시연 목적으로만 사용되었습니다.
섹션 결과
이 섹션에서는 Dynamic 런타임 생성 세팅을 사용하여 게임플레이 중에 내비게이션 메시를 재생성하는 방법을 알아보았습니다. 또한 레벨에서 스피어 메시를 움직이는 블루프린트를 생성하고 내비게이션 메시의 지속적인 재생성을 강제하여 결과를 테스트해 보았습니다.