후들후들

foodybug.egloos.com

포토로그



NavMeshAgent의 초기화 관련 문제 Unity



Unity에서 기본적으로 제공하는 NavMesh 관련 기능들은 사용법이 비교적 간단하기 때문에

유니티에 입문하는 초보자들이 많이 이용하곤 합니다.

특히 NavMeshAgent를 자주 사용하게 되는데요, 이 NavMeshAgent는 단순하게 사용할 때는

크게 문제가 되지 않는데 Instantiate 함수로 사용하고자 하면 아래와 같은 에러가 발생하면서

NavMeshAgent가 부착된 오브젝트의 위치가 정상적으로 초기화되지 않는 경우가 발생합니다.






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



이 문제는 NavMeshAgent가 Bake된 NavMesh에 이미 종속돼 활동을 시작했기 때문에

임의로 현재 오브젝트 위치를 변경하는 것을 허용하지 않기 때문에 발생하는 문제입니다.

NavMesh를 사용하다보면 상당히 자주 겪을 수 있는 문제이지만

유니티 홈피에서는 별다른 해결방법이 언급돼있지 않습니다. 5.2.2f1 기준입니다.



NavMeshAgent _agent = GetComponent<NavMeshAgent>();

_agent.enabled = false;

transform.position = Random.onUnitSphere;

_agent.enabled = true;


임의로 transform의 position을 변경하고자 한다면 NavMeshAgent의 동작을 멈추시면 됩니다.






덧글

  • 사지방 마법사 2017/09/21 20:19 # 삭제 답글

    옼ㅋㅋ 감사합니다. 누구라도 설명해주니 속이 편합니다.
  • 후들후들 2017/11/16 22:24 #

    감사합니다~
댓글 입력 영역