유니티의 api로 길 찾기 네비메시(Nav Mesh) 컴포넌트를 제공합니다.
몬스터가 벽, 물, 낭떠러지 등을 피해서 최단 루트로 유저를 쫓아오거나 NPC의 정해진 루트 배회 등 유용하게 쓸 곳이 많은 기능이지만,
제 경우엔 몬스터가 네비메시 기능을 이용하여 플레이어를 쫓아오는데 2가지 문제가 발생하였습니다.
1. 회전 속력이 느려 플레이어를 쫓아오는 것이 자연스럽지 않음
2. 플레이어로부터 일정 거리 이하가 되면 정지하는데 관성을 받아 미끄러져서 지나치게 가까워짐
해결 방법은 각각 아래와 같습니다.
1. NavMeshAgent의 회전 기능을 끄고 직접 회접값을 즉각 대입
(NavMeshAgent 변수 명칭).updateRotation = false;
를 써주면 네비메시 에이전트는 더 이상 회전을 주지 않습니다.
플레이어 방향을 바로 보게 하려면
transform.LookAt(Transform Target, Vector3 WorldUp); 을 쓰면 되지만,
저는 회전하는 모습을 플레이어에게 보여주도록 하기 위해 선형 보간법인 Lerp를 이용하여 처리하였습니다.
2. 멈출 때 NavMeshAgent의 속력을 즉시 0으로 만들어 줌
멈춰야 할 시점에 아래 구문을 써주면 즉시 멈춥니다.
(NavMeshAgent 변수 명칭).velocity = Vector3.zero;
<< 해결 >>
'Unity 에러 노트' 카테고리의 다른 글
매뉴얼에서 알려주지 않은 코루틴 WaitForSeconds()의 매개변수 t에 대해 (0) | 2024.04.15 |
---|---|
유니티) 갤럭시 s24 시리즈와의 앱 호환성 문제 (0) | 2024.03.12 |
Edge Collider 2D 스크립팅 툴팁 오기 (0) | 2024.03.10 |
인스펙터에 스크립트 활성/비활성 체크 박스 사라짐 (0) | 2023.10.12 |
스프라이트 마스크가 다른 오브젝트의 스프라이트를 출력할 때 (0) | 2023.09.15 |