본문 바로가기
프로그래밍/유니티

Unity NavMesh #4 Up Vector가 자유로운 NavMesh

by 넋두리- 2021. 2. 15.

세번째 예제를 살펴볼 차례입니다.

 

이전의 포스팅과 마찬가지로

혹시 NavMesh Building Component를 다운받지 않았으면 아래 링크에서 먼저 다운로드 해주세요.

다운로드 : github.com/Unity-Technologies/NavMeshComponents

 

Unity-Technologies/NavMeshComponents

High Level API Components for Runtime NavMesh Building - Unity-Technologies/NavMeshComponents

github.com

 

3_free_orientation.unity를 열어주세요.

 

오늘 예제는 실행해보니 가벼운 내용인 것 같습니다!!

 

3_free_orientation

 

얼핏 보기에는 그냥 NavMesh 위에서 움직이는 에이전트인것 같지만

NavMeshAgent가 마치 스파이더맨 마냥 바닥을 아무리 회전시켜도 바짝 붙어있습니다.

 

Unity의 기본 NavMesh 시스템에서 NavMesh의 up-vector는 (0, 1, 0)으로 y축과 동일한 것이었습니다.

그런데 NavMesh Building Component NavMeshSurface의 up-vector는 NavMesh에 따라서 달라지는 것으로 보입니다.

 

비교를 위해서 Unity의 기본 NavMesh 시스템에서 동일한 방식으로 테스트해봤습니다.

 

unity navmesh bake

네비메시 빌드에 관여하도록 static으로 설정한 Plane을 회전시키고 난 뒤에 bake 했더니

유효한 네비메시 생성이 아예 되질 않습니다.

 

gif가 작아서 잘 안보일 수 있는데 런타임에 아래와 같은 에러 메시지가 뜹니다.

"SetDestination" can only be called on an active agent that has been placed on a NavMesh.

 

NavMeshAgent 객체가 유효한 NavMesh 위에 있지 않는데 SetDestination 함수를 호출해서 발생한 에러입니다.

 

세번째 예제의 핵심은 간단합니다.

 

NavMesh Building Component를 통해 빌드한 네비 메시는 up-vector가 (0, 1, 0)에 한정적이지 않고 자유롭다.

 

오늘은 짧게 끝났네요. 그럼 다음 예제에서 찾아뵙겠습니다!

댓글