[Go-Unity 3D] 13. 경로탐색 Navigation Mesh ⭐⭐⭐

업데이트:

카테고리:

태그: , ,


Navigation Mesh, Step Height(계단) , Max Slope(경사각),
컴포넌트(NavMeshAgent, OffMeshLink, NavMeshObstacle)

고박사의 유니티 기초를 정리.

1. Navigation Mesh

게임월드에 이동 가능, 이동 불가능 등의 경로를 데이터로 저장




2. Navigation View

Window->AI->Navigation

1). Agents

네비게이션 메시 정보를 바탕으로 움직이는 에이전트에 대한 설정(NavMeshAgent 컴포넌트)
image

  • Agent Type 에이전트 속성 + 로 새로운 에이전트 속성을 추가

Agent 정보

Name Radius Height Step Height Max Slope

Step Height : 오르내릴 수 있는 계단의 높이
Max Slope : 올라갈 수 있는 경사 각도


2). Area

네비게이션 메시로 사용되는 오브젝트들의 구역설정
image

  • Name : 구역 이름으로 기본으로 Walkable(이동가능), NotWalkabel(이동불가), Jump(뛰기)가 제공되고,
    User 3 부터 원하는 구역을 추가 설정할 수 있다.
  • Cost : 구역과 함께 등록. 이동하는데 소요되는 비용 경로를 탐색할 때 Cost 정보를 기준으로 최단거리를 찾게 된다.


3). Bake

네비게이션 메시 데이터를 생성
image

Baked Agent Size

( Agent Radius, Agent Height, Max Slope, Step Height)

반지름, 높이, 경사각, 계단의 높이

Generated Off Mesh Links

오브 메시 링크는 올라가기 힘든 언덕, 사다리, 절벽 등을 연결해서 이동 가능하게 만드는 옵션이다.

Drop Height : 이동할 수 있는 절벽 아래의 높이
Jump Distance : 뛰어서 넘을 수 있는 절벽 거리

  • Bake 버튼 : Navigation에 설정된 옵션들을 바탕으로 데이터를 굽는다.


4). Object

재 씬에 있는 오브젝트 설정
image

  • Scene Filter : 현재 씬에서 원하는 오브젝트만 선택해서 볼 수 있다.

선택된 오브젝트

Navigation Static : 네비게이션 메시로 사용할지 설정
Genrate OffMeshLink : 자동으로 Off Mesh를 생성할지 설정
Navigation Area : 해당 오브젝트의 구역 설정





3. NavMeshAgent 컴포넌트

네비게이션 메시 정보를 바탕으로 이동하는 에이전트
image

Steering(에이전트 이동)

Angular Speed : 방향을 바꿀 때의 회전속도
Acceleratin : 가속도 (정지->이동속도가 될 때까지 적용)
Sopping Distance : 목적지가 이 값까지 가까워지면 이동을 멈춤
Auto Baking : 목적지에 가까워지면 멈추는 기능

Obstacle Avoidance(장애물 회피)

Radius: 장애물을 회피할 때 에이전트의 반지름
Height : 에이전트의 높이
Quality: 장애물과 충돌 수준 (None이면 뚫고 지나간다)
Priority : 장애물과 충돌했을 때의 우선순위 (낮을 수록 높다)
(이동 중인 두 에이전트의 모든 조건이 동일할 때 Priority가 낮은 에이전트가 더 우선권을 가지고 경로를 탐색하게 된다)

Path Finding(경로탐색)

Auto Traverse Off Mesh Link : 오프 메시 링크가 있을 경우 자동으로 탐색해서 찾아갈지 설정
Auto Repath : 이동 중에 경로 탐색을 다시 할지 설정
(true : 이동 중에 장애물 등으로 막혔을 때 자동으로 재계산)
Area Mask : 해당 에이전트의 이동 가능한 구역 지정



다른 컴포넌트들

image

  • OffMeshLink : 연결이 끊어져 있는 절벽, 낭떠러지, 사다리 등을 이동 가능하게 설정
  • NavMeshObstacle : 이동하는 장애물의 네비게이션 메시 정보를 실시간으로 설정
    [Go-Unity 3D] 15. Navigation Mesh 연습2




4. Navigation mesh 생성

  1. Navigation Static 설정하기
    방법1. 원하는 오브젝트 선택 후 Inspector View 의 Static - Navigation Static 선택
    image
    방법2. Navigation View의 Object 탭에 Navigation Static 변수 체크
    image
  2. Bake 탭의 설정을 원하는 수치만큼 조정
  3. Bake 탭의 Bake버튼으로 데이터 생성
    (Scene 뷰의 하늘색 구역이 이동가능한 부분이다)
    image
  4. Playe 오브젝트에 Nav Mesh Agent 등록
    image





5. 정리

  • Navigation으로 최단루트로 길찾는 방법에 대해서.


참고 : 유니티 TOP


📔

댓글남기기