2024. 2. 21. 23:52ㆍ내외 교육들/TIL
NavMeshAgent.Warp 란?
NavMeshAgent 컴포넌트가 조종하는 위치값에 매개변수로 Vector3 값을 받고 컴포넌트가 적용된 게임 오브젝트를 Vector3 값으로 이동하는 메서드이다.
그러면 이걸 왜 언급하느냐?
트러블 슈팅을 해야 하기 때문에 언급한 것이다. 위 사진에서 식당 입구에 포탈 기능이 들어있는 콜라이더2D 컴포넌트가 포함된 게임오브젝트에서 NPC와 충돌 시 식당 내부로 이동하려고 했지만 아래 사진처럼 엉뚱한 위치에 나타난 것이다.
원인분석
해당 포탈 기능에는 단순히 게임오브젝트의 transform 컴포넌트에 position 값에 원하는 위치값을 대입시켜서 해결하는 기능이였지만, 먹히지 않았다. 좀 더 관점을 바꿔서, NPC 들이 이동하는 메커니즘, 즉 위치값이 바뀌는 NavMeshAgent 컴포넌트에 있다고 생각했고, 그에 관해서 Agnet의 위치값을 변화시키는 메서드가 있는지 확인해본 결과 결국 NavMeshAgent의 메커니즘 때문에 이러한 오류가 나온 것이다. NavMeshAgent는 NavMesh 상에 Bake된 오브젝트 안에서 이동하기 위해 경로 계산 알고리즘을 사용한다. 여기서 NavMesh는 'transform.position'을 직접 변경시켜서 이동하는 상황을 NavMeshAgent가 이해하지 못하는 것 때문에 오류가 발생하였다.
해결법
NavMesh 상에서 순간적인 이동을 원할 경우 NavMeshAgent의 Warp 메서드를 이용하는 것이 올바르다고 말할 수 있다.
'내외 교육들 > TIL' 카테고리의 다른 글
TIL)2024-02-23 마무리 작업 진행 중.... (0) | 2024.02.23 |
---|---|
TIL)2024-02-22 앞으로의 마무리에 대해서 (1) | 2024.02.22 |
TIL)2024-02-20 간단 상황보고 (0) | 2024.02.20 |
TIL)2024-02-19 테스트 환경 완성과 포탈 기능 추가 (0) | 2024.02.19 |
TIL)2024-02-16 애니메이션 일단락으로 완성 및 최종 목표 정하기 (0) | 2024.02.16 |