Unity3D как связать НавМеш и НавМешАгент

Я получаю эту ошибку в редакторе

"SetDestination" can only be called on an active agent that has been placed on a NavMesh.Вот шаги, которые я пробовал при решении проблемы:

  1. Деформация NavmeshAgent в расположение NavMesh
  2. Перемещение NavMeshAgent вручную в NavMesh
  3. Перепроверка NavMesh и выполнение шагов выше
  4. Создание поля с NavMeshAgent и новым NavMesh
    • у кого-нибудь есть какие-либо другие советы, которые я мог бы использовать?

2 ответа

Решение

Деформация позиции Агентов Навигационной Сетки может иногда вызывать ошибки, особенно если она переходила из одной навигационной сетки в другую.

Это странная ошибка, но кажется, что обнаружение, если агента нет в navmesh, а затем отключение и повторное включение агента - это решит проблему (в моем случае это произошло).

Я решил это в своем проекте, выполнив следующие действия при деформации.

//use some existing reference to your NavMeshAgent
NavMeshAgent agent = PlayerController.instance.GetComponent<NavMeshAgent>(); 

//This will fire when you get the error you're describing.
if (!agent.isOnNavMesh)
{
   Vector3 warpPosition; //Set to position you want to warp to
   agent.transform.position = warpPosition;
   agent.enabled = false;
   agent.enabled = true;
}

Мы можем использовать компонент navmesh 1. поверхность navmesh 2. модификатор navmesh 3. громкость модификатора navmesh 4. offlink с помощью navmesh, используя этот компонент, мы легко соединяем navmesh и navmeshagent.

Другие вопросы по тегам