Unity3D как связать НавМеш и НавМешАгент
Я получаю эту ошибку в редакторе
"SetDestination" can only be called on an active agent that has been placed on a NavMesh.
Вот шаги, которые я пробовал при решении проблемы:
- Деформация NavmeshAgent в расположение NavMesh
- Перемещение NavMeshAgent вручную в NavMesh
- Перепроверка NavMesh и выполнение шагов выше
- Создание поля с 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.