导航报错SetDestination() can only be called on an active agent that has been placed on a NavMesh

原因:初始化导航组件NavMeshAgent 的时候,agent 离navmesh太远。isOnNavMesh属性为false;

解决办法: 在初始化预制体的时候,传入诞生点位置和旋转信息。

GameObject.Instantiate(m_shooter, m_currBirthPoint.transform.position,m_currBirthPoint.transform.rotation) as GameObject;

而不是直接初始化,后设置诞生点位置。

GameObject.Instantiate(m_shooter);
shooter.transform.position = m_currBirthPoint.transform.position;

另外:在重新使用SetActive(true);的时候,也要确保agent 离navmesh足够近。 建议在设置SetActive(false);的时候,就不要改变位置信息,以免重新激活时离导航网格太远。

标签: none