세번째 예제를 살펴볼 차례입니다.
이전의 포스팅과 마찬가지로
혹시 NavMesh Building Component를 다운받지 않았으면 아래 링크에서 먼저 다운로드 해주세요.
다운로드 : github.com/Unity-Technologies/NavMeshComponents
3_free_orientation.unity를 열어주세요.
오늘 예제는 실행해보니 가벼운 내용인 것 같습니다!!
얼핏 보기에는 그냥 NavMesh 위에서 움직이는 에이전트인것 같지만
NavMeshAgent가 마치 스파이더맨 마냥 바닥을 아무리 회전시켜도 바짝 붙어있습니다.
Unity의 기본 NavMesh 시스템에서 NavMesh의 up-vector는 (0, 1, 0)으로 y축과 동일한 것이었습니다.
그런데 NavMesh Building Component NavMeshSurface의 up-vector는 NavMesh에 따라서 달라지는 것으로 보입니다.
비교를 위해서 Unity의 기본 NavMesh 시스템에서 동일한 방식으로 테스트해봤습니다.
네비메시 빌드에 관여하도록 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)에 한정적이지 않고 자유롭다.
오늘은 짧게 끝났네요. 그럼 다음 예제에서 찾아뵙겠습니다!
'프로그래밍 > 유니티' 카테고리의 다른 글
Unity NavMesh #6 실시간 네비메시 빌드 3 (0) | 2021.02.22 |
---|---|
Unity NavMesh #5 실시간 네비메시 빌드 2 (0) | 2021.02.16 |
Unity NavMesh #3 실시간 네비메시 빌드 (0) | 2021.02.14 |
Unity NavMesh #2 Multiple Agent (0) | 2021.02.03 |
Unity NavMesh #1 에이전트 장애물 충돌 회피 (0) | 2021.02.02 |
댓글