Navigation 고급 기법(계단, 지형지물)
동적 장애물 처리
● 동적 장애물 처리(NavMeshObstacle)
- 장애물이 사라질 시 해당 지역을 장애물로 그대로 인식 문제 -> 동적 장애물 활용
● 동적 장애물 처리하는 방법:
Navigation Static 언체크 후 Nav MEsh Obstacle 컴포넌트 추가
● Carv 속성 지정
- 촘촘히 세워져 있는 오브젝트들이 있을 때 적이 그걸 뚫고 지나오는 것이 아닌 멀리 돌아서 추적하는 형태로 만드는 방법
- Carve 옵션 체크
->실시간으로 메쉬가 변경(단 시스템의 부하가 큼)됨. 촘촘히 세워져 있는 오브젝트들을 우회해서 감.
Move Threshold : 속상값의 거리만큼 이동했을 때 메시를 갱신
ㄴ최소 이동 거리, Move Threashold 보다 조금 움직인 것은 오브젝트가 움직이지 않은 것으로 간주하여 Carve를 새로 계산하지 않음
Time To Stationary : 동일 위치에서 일정 시간동안 정지했을 때 네비 메시를 갱신
Carve Only Stationary : 정지 상태에만 네미 메시를 갱신
ㄴ언체크 시 오브젝트가 터져서 떨어질 때도 장애물로 인식하는 영역이 생김. 동적으로 장애물에 대한 갈 수 있는 메쉬 계산
● Off Mesh Link Generation
- 끊어진(분리된) 메시를 연결하는 기능
◦네비게이션은 기본적으로 3D 메시의 정보를 기반으로 네비 메시를 생성. 따라서 서로 분리된 메시는 추적 불가. 다만 Off Mesh Link를 통해 서로 분리된 메시를 추적 가능한 연결고리를 생성 가능
ex)Floor(바닥 지형) 위에 계단을 설치 했을 경우 계단과 지형은 함께 Bake 되지 않으므로 네비게이션 추적 불가->Off Mesh Link 사용하여 추적 가능
Stair y축으로 -0.2 -> Static 옵션에서 Navigation과 Off Mesh Link Generation 체크
Navigation Static, Generate OffMeshLinks 체크
● Bake 속성 지정
- Drop Heigh : 5로 지정
◦Off Mesh Link가 생성되는 최대 높이를 지정하는 방법
◦Drop Height 이하에서만 링크 생성
-Jump Distance:0
◦같은 높이에서 장애물을 뛰어 넘을 수 있는 거리를 설정하는 옵션
◦[Bake] 버튼을 클릭해 네비메시를 베이크 하면 연결선이 보임
캐릭터가 올라갈 수 있도록 Mesh Collider 추가 -> Convex 체크(폴리곤 수 낮추기
Tip. Navigation의 Bake 속성에서 Agend Radius 값을 줄이면 Off Mesh Link가 촘촘하게 생성됨