본문 바로가기

Unity 공부시작

[Unity3D] NavMeshAgent 미끄러짐 or 순간이동 현상

 현재 개발 중인 게임의 적 유닛은 플레이어를 발견했을 시 공격이 가능한 거리가 될 때까지 플레이어에게 접근한 뒤

 

공격을 시작한다.

 

 적 유닛은 NavMeshAgent를 이용하여 이동하는데, 멈출 때는 NavMeshAgent.isStopped를 true로 바꿔주었다.

 

그러자 적 유닛이 멈춘 뒤 다시 이동할 때 순간이동을 하는 현상이 발생했다.

 

그 이유는 NavMeshAgent에 Velocity가 존재하기 때문이다.

 

isStopped를 했을 때 씬에서 캐릭터의 위치는 그 자리에서 멈추지만,

 

실제 NavMeshAgent에서의 위치는 Velocity가 zero가 될때까지 미끄러져간다.

 

isStopped를 true로 바꿔주면서 NavMeshAgent.velocity를 Vector3.zero로 초기화해주자 원하는 결과를 얻을 수 있었다.