Unity3D как соединить NavMesh и NavMeshAgent

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

"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. Creating a box with NavMeshAgent and a new NavMesh
    • does anyone have any other tips that I could use?

person Luka Rolak    schedule 29.09.2017    source источник
comment
Покажите сценарий, который вы используете для подключения NavMesh к NavMeshAgent.   -  person Programmer    schedule 29.09.2017
comment
Это строка, которая выдает ошибку, в этом нет ничего плохого, я использовал один и тот же код миллионы раз до PlantAgent.SetDestination(Player.transform.position); PlantAgent относится к типу NavMeshAgent.   -  person Luka Rolak    schedule 29.09.2017
comment
также тот же код работает в другом проекте, но в этом я почему-то не могу настроить NavMesh   -  person Luka Rolak    schedule 29.09.2017
comment
Активен ли компонент NavMeshAgent? Покажите нам несколько скриншотов сцены/свойств.   -  person Serlite    schedule 29.09.2017
comment
Я все проверил, NavMesh статичен, агент активен, у меня такая же установка работает в другом проекте без проблем   -  person Luka Rolak    schedule 29.09.2017
comment
Я не знаю, чем помочь в данный момент. Можете ли вы заархивировать проект и загрузить его куда-нибудь, а затем отправить ссылку сюда. я посмотрю на это   -  person Programmer    schedule 29.09.2017
comment
К сожалению, это нарушило бы мое соглашение о неразглашении. Это действительно странная ошибка, которую я не могу воспроизвести в других проектах. Я везде искал какой-то API или функцию, которая позволила бы мне вручную связать navmesh и агент navmesh, но его нет.   -  person Luka Rolak    schedule 29.09.2017
comment
Обычно вы создаете простую сцену и пытаетесь воспроизвести ее. Если вы не можете воспроизвести это, то это будет трудно исправить. Я уверен, что это не ошибка. Это ошибка с вашей стороны, но кто знает... Надеюсь, вы найдете исправление. Опубликуйте решение, когда найдете его   -  person Programmer    schedule 30.09.2017
comment
Куда вы деформировали свой NavMeshAgent? Может быть, это слишком много выше или ниже NavMesh? Просто дикая догадка...   -  person yes    schedule 30.09.2017


Ответы (2)


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

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

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

//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;
}
person Bejasc    schedule 30.09.2017
comment
Эта вещь решила это!! спасибо, Unity надо выяснить, почему такое происходит в проектах - person Luka Rolak; 09.10.2017

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

person Abhishek Tyagi    schedule 03.04.2018