유니티

유니티 06. Navigation Mesh 기초

채채_._. 2024. 5. 15. 11:58

Navigation Mesh

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

 

- 해당 실습을 하기 위해 window > package manager > unity registry > Ai Navigation으로 다운받음.

- 설치된 것을 확인했으면 navigation view를 위해 navigation mesh 설정.

- 4개의 탭이 있음.

  • Agent Type

 

Agent Type

- 에이전트 속성

- 정보

  • Name
  • Radius
  • Height
  • Step Height
  • Max Slope

 

Areas Type

 

  • Name
    • 구역 이름으로 기본으로 (Not) Walkable, Jump가 제공 
  • Cost
    • 구역과 함께 등록되며 이동하는데 소요되는 비용

 

Bake

- 최근 버전에는 지원이 되지 않기에 NavMeshSurface component를 추가하여 bake 가능.

  • Baked Agent Size
  • Generated Off Mesh Links
    • 언덕, 사다리, 절벽 등을 연결해서 이동 가능하게 만드는 옵션
    • Drop Height : 이동할 수 있는 절벽 아래의 높이
    • Jump Distance : 위에서 넘을 수 있는 절벽 거리
  • "Bake" 버튼

 

Navigation Mesh 데이터 생성

- 게임 오브젝트의 Navigation Static 설정

  1. Inspector View 의 Static - Navigation Static 선택
  2. Navigation View의 Object 탭에 있는 Navigation Static 변수 체크

- Bake한 후 하늘색으로 표시되어 있는 부분이 이동 가능한 부분.

 

NavMeshAgent 기반의 캐릭터 이동

- 캡슐을 생성 및 material 생성하여 적용.

- NavMeshAgent도 설정.

  • Steering
    • 에이전트 이동
  • Obstacle Avoidance
  • Path Finding

[Script]

Movement.cs

- NavMeshAgent.SetDestination(Vector3 position); : position을 목표지점으로 설정.

- NavMeshAgent.destination : 목표지점

- NavMeshAgent.ResetPath() : 이동 경로를 초기화하여 이동을 멈추게 함.

 

PlayerController.cs

 

- 캡슐에 적용하면 캡슐 이동하는 동안 절벽을 선택하면 근처까지 가되 더 이상 이동 불가.