NavMesh 계층(Pro 전용)

네비게이션 시스템의 주요 과제는 네비게이션-공간에서 두 점 사이에 최적의(optimal) 경로를 찾는 것입니다. 가장 단순한 경우로는, 최적의 경로는 가장 짧은 경로가 된다. 수많은 복잡한 환경에서, 어떤 지역은 다른 지역보다 움직이기가 어렵습니다(예를 들어, 강을 건너는 것을 다리를 건너를 것 보다 값비싼 비용을 치러야 한다). 이를 모델링 하려면, Unity는 비용(cost)이라는 개념을 사용하며 최적의 경로는 최소의 비용을 가지는 경로로 정의될 수 있습니다. 비용을 관리하기 위해, Unity에는 Navmesh Layers. 라는 개념이 있습니다 Navmesh Static 이라고 표시된 된 각 기하구조(geometry)는 Navmesh Layer 에 속합니다.

경로 찾기(pathfinding)동안, 장차 가능한 경로 구간의 길이를 비교하기 보다는, 각 구간의 비용을 계산합니다. 이는 각 특정 구간에 대한 네브메시 계층(navmesh layer)의 비용에 의하여 각 구간의 길이를 측정하면 됩니다. 주의할 것은, 모든 비용이 1이 되었을 때, 그 최적의 경로는 가장 최단 경로에 해당합니다.

각 프로젝트 당 사용자 정의 계층(customer layer)을 정의하려면 *Go to EditProject SettingsNavmesh Layers

  • 사용자 계층 중 하나로 가서, 이름과 비용을 설정합니다.
    • 이름은 씬(Scene)의 모든 곳에서 해당 네브메쉬 계층을 구분하는 데 사용될 것입니다
    • 해당 네브메쉬 계층을 통과하는 것이 얼마나 어려운지를 나타낸다. 1은 기본값, 2.0은 두 배의 난이도, 0.5는 절반 정도의 난이도를 나타냅니다.
  • 여기에는 3개의 내장 계층(layer)이 있습니다
    • 기본 값 – 아무런 값이 없을 경우 모든 것의 비용을 나타냅니다
    • 걸을 수 없음 – 비용은 의미가 없어집니다
    • 점프 – 자동으로 생성된 오프 메쉬 링크의 비용

특정 기하구조에 사용자 정의된 계층을 적용하려면 *편집기에서 기하구조를 선택합니다 *Navigation Mesh 창을 띄웁니다 (WindowNavigation) *Object 탭으로 가서, 해당 객체에 대하여 원하는 Navigation layer 을 선택합니다 →

*Show NavMesh 창에서 Navmesh Display 을 활성화 하면, 여러 계층이 다른 색깔로 편집기에 나타나야 합니다.

사용자가 어떤 계층을 통과하고 통과 할 수 없는지를 알려주려면 *에이전트의 기하구조의 NavMeshAgent 컴포넌트로 가서 *NavMesh Walkable 속성을 변경하고

  • 스크립트에서 에이전트의 destination 속성을 잊지 말고 설정하여야 합니다.

주의: 비용 값을 1보다 작게 설정하면 pathfinding 방법에서는 이런 경우에는 최적의 경로를 보장하지 않으므로 피하여야 합니다

네비메쉬 계층을 사용하는 좋은 사용 케이스는:

  • 사용자가 도보자(NavmeshAgents)가 걸어야 하는 도로를 가지고 있습니다.
  • 해당 도보 도로의 한 가운데는 그들이 선호하는 장소입니다
  • 그 도로에 높은 비용을 가진 네비메쉬를 설정하고, 도보자 도보도로에는 낮은 비용의 네비메쉬 계층을 설정합니다.
  • 이렇게 하면 에이저트가 도보자 도보도로를 통하여 가는 길을 선호하도록 할 것입니다.

또 다른 pathfinding 에 관련된 주제를 보려면 Off-mesh links을 참조합니다.

(back to Navigation and Pathfinding)

역링크