내비게이션 시스템의 내부 작업
NavMesh 빌딩 컴포넌트

내비메시 빌드

레벨 지오메트리에서 내비메시(NavMesh) 생성 과정을 내비메시 베이킹이라 부릅니다. 이 프로세스는 내비게이션 정적으로 마크된 메시 렌더와 모든 게임 오브젝트의 터레인을 수집한 후 처리하여 내비메시를 생성합니다. 메시는 레벨의 걸을 수 있는 표면과 비슷합니다.

Unity에서 내비메시 생성은 내비게이션 창에서 이루어집니다(메뉴: 창(Window) > 내비게이션(Navigation)).

씬에서는 네 가지 단순한 단계를 거쳐 내비메시를 빌드합니다.

  1. 내비게이션에 영향을 주는 씬 지오메트리를 Select합니다. - 걸을 수 있는 표면과 장애물입니다.
  2. 내비게이션 스태틱을 Check하여 내비메시 베이킹 프로세스 안에 선택한 오브젝트를 포함시킵니다.
  3. 베이크 설정을 Adjust하여 에이전트의 크기에 맞춥니다.
    • 에이전트 반경 은 벽이나 낭떠러지 같은 지형에 에이전트 센터가 얼마나 가깝게 다가갈 수 있는지를 정의합니다.
    • 에이전트 높이 는 에이전트가 다가갈 수 있는 공간의 높이를 정의합니다.
    • 최대 슬로프 는 에이전트가 걸어 올라갈 수 있는 경사의 기울기가 어느 정도 되는지 정의합니다.
    • 스텝 높이 는 에이전트를 멈춰 세우는 장애물의 높이가 어느 정도 되는지 정의합니다.
  4. 베이크를 Click해서 내비메시를 빌드합니다.

빌드된 내비메시 결과는 내비게이션 창이 열리고 사용자의 눈에 씬이 들어올 때마다 기본 지오메트리 레벨 위에 파란 오버레이로 나타납니다.

위 그림에서 볼 수 있듯이, 생성된 내비메시에서 걸을 수 있는 영역이 더 작아 보입니다. 내비메시는 에이전트의 센터가 움직일 수 있는 영역을 나타냅니다. 개념적으로는 에이전트를 작아진 내비메시의 포인트로 여기든 풀 사이즈 내비메시의 원으로 여기든 둘은 같은 요소이므로 상관이 없습니다. 하지만 포인트로 해석하면 런타임 효율을 개선할 수 있고, 에이전트가 반지름에 상관없이 틈 사이로 지나갈 수 있는지 여부를 설계자가 즉시 확인할 수도 있습니다.

또 한 가지 유의해야 할 점은 내비메시는 걸을 수 있는 표면에 대한 근사치라는 점입니다. 예를 들어 계단의 경우 평면으로 표현되지만 소스 표면은 계단으로 되어 있을 수 있습니다. 이것은 내비메시 데이터 크기를 작게 유지하기 위해서입니다. 근사치의 부작용은 가끔씩 레벨 지오메트리에 추가 영역을 가져야 에이전트가 좁은 지점을 통과할 수 있습니다.

베이킹이 끝나면 내비메시 에셋 파일이 씬 이름과 같은 이름을 가지고 폴더 안에 생성됩니다. 예를 들어 씬을 Assets 폴더 안에 첫 번째 레벨 로 만들었다면 내비메시는 Assets > First Level > NavMesh.asset 에 위치하게 됩니다.

베이킹을 위한 오브젝트 마킹 추가 워크플로

내비게이션 창에서 오브젝트를 내비게이션 스태틱 으로 마킹하기 외에도 위에서 설명한 대로 인스펙터 맨 위의 정적 메뉴를 이용할 수 있습니다. 내비게이션 창을 열어 두지 않았다면 편리한 기능입니다.

추가 정보

내비게이션 시스템의 내부 작업
NavMesh 빌딩 컴포넌트