동적 장애물 및 TagVolume 사용

Gameware Navigation에서는 두 가지 방법으로 월드의 동적 장애물 및 파괴 가능한 장애물의 존재를 처리합니다. 사용해야 하는 방법은 주로 장애물의 이동 여부에 따라 달라집니다.

장애물 클래스

장애물을 표현하는 데 사용할 수 있는 클래스에는 세 가지가 있습니다.

TagVolume

TagVolume 클래스는 정지된 물리적 장애물 또는 해당 범위가 항상 NavMesh에 통합되는 추상 구역을 나타냅니다.

TagVolume은 오브젝트 초기화 시 설정한 NavTag로 포괄하는 NavMesh 영역에 대한 태그를 지정합니다. 이 NavTag에 대해 영역을 탐색할 수 없는 것으로 표시하는 "배타적" 플래그를 지정할 수 있습니다. 이 경우 기본적으로 NavMesh에 구멍이 뚫립니다. 또는 경로 찾기, 경로 따르기 및 쿼리 중에 검색하고 처리할 수 있는 정수 데이터 값의 사용자 정의 배열로 영역의 태그를 지정할 수 있습니다. NavTag 시스템에 대한 자세한 내용은 사용자 정의 데이터로 태그 지정을(를) 참조하십시오.

예를 들어 오른쪽의 TagVolume은 배타적으로 플래그가 지정되었습니다. 왼쪽의 TagVolume은 사용자 정의 데이터로 NavMesh에 대한 태그를 지정했습니다. 기본적으로 여전히 보행 가능하지만 경로를 따르는 동안 NavTag를 탐지하여 응답할 수 있습니다.

이 클래스를 사용하여 다음을 직접 표현할 수 있습니다.

  • 물리적 볼륨을 차단하지 않는 장애물 또는 구역(예: 지뢰 지대, 홍수 지역, 다양한 지형의 구역)
  • 비교적 정지되어 있고 범위 및 위치가 변경되지 않는 물리적 장애물(예: 나무, 가로등 기둥, 대형 가구 또는 상자 등)

TagVolumes 설정을(를) 참조하십시오.

CylinderObstacles

CylinderObstacle 클래스는 해당 치수가 단일 원통으로 가장 잘 표현되는 이동 가능한 물리적 오브젝트를 나타냅니다.

기본적으로 이러한 오브젝트는 동적 회피 시스템에서만 고려됩니다. 그러나 정지 상태가 된 경우 내부 TagVolume을 투명하게 생성하여 NavMesh에 자체적으로 통합되도록 쉽게 요청할 수 있습니다.

예를 들어 왼쪽의 오렌지색 원통은 이동하므로 동적 회피에서만 고려됩니다. 다른 원통은 정지되어 있으므로 NavMesh에 통합됩니다. 회색 영역의 원통에는 배타적으로 설정된 NavTag가 있고, 녹색 영역의 원통에는 사용자 정의 데이터 값이 있는 NavTag가 있습니다.

이 클래스를 사용하여 다음을 표현할 수 있습니다.

  • 플레이어가 제어하는 캐릭터
  • 축이 수직에 가까운 원통형 오브젝트(예: 맥주통 또는 기둥)

CylinderObstacles 설정을(를) 참조하십시오.

BoxObstacles

BoxObstacle 클래스는 고정된 범위와 상자 모양의 볼륨을 가진 이동 가능하거나 자유 회전되는 물리적 오브젝트를 나타냅니다.

기본적으로 이러한 오브젝트는 동적 회피 시스템에서만 고려됩니다. 그러나 정지 상태가 된 경우 내부 TagVolume을 투명하게 생성하여 NavMesh에 자체적으로 통합되도록 쉽게 요청할 수 있습니다.

예를 들어 왼쪽의 오렌지색 상자는 이동하고 자유롭게 회전하므로 동적 회피에서만 고려됩니다. 다른 상자는 정지되어 있으므로 NavMesh에 통합됩니다. 회색 영역의 상자에는 배타적으로 설정된 NavTag가 있고, 갈색 영역의 상자에는 사용자 정의 데이터 값이 있는 NavTag가 있습니다.

이 클래스를 사용하여 다음을 표현할 수 있습니다.

  • 이동하는 차량
  • 이동할 수 있는 상자 또는 가구, 문, 폭발 후에 잡석 등

BoxObstacles 설정을(를) 참조하십시오.

동적 NavMesh 성능

TagVolume을 NavMesh에 통합하는 작업은 계산이 복잡할 수 있습니다. 이 프로세스는 CPU 피크를 피하기 위해 자동으로 시간 분할되지만 새 TagVolume이 NavMesh에 즉시 통합되거나 지정된 프레임 수 이내에 통합된다는 보장은 없습니다.

최상의 성능을 위한 권장 사항