導航報錯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);的時候,就不要改變位置信息,以免重新激活時離導航網格太遠。
發佈了60 篇原創文章 · 獲贊 31 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章