Выпекание Unity NavMeshSurface из NavMeshComponents на C# Созданная сетка - PullRequest
0 голосов
/ 03 мая 2020

Проблема:
У меня проблемы с выпечкой C# сгенерированного мной sh с использованием скрипта NavMeshSurface, предоставленного в NavMeshComponents .

Если Я запекаю NavMeshSurface на "WalkableMe sh" GameObject. Выпекание закончилось быстро, и ничего нельзя пройти. NavMeshSurface не становится синим, чтобы показать, что он доступен для навигации. walkablemeshunbaked

Настройка / Установка:
Здесь представляет собой полный архив активов, если вы хотите увидеть поведение Я опишу ниже. Скопируйте их в свой проект root (я использую Unity 2019.3), и вы окажетесь на полпути.

Ниже приведены настройки для моего агента. Вы должны будете установить свой агент на эти настройки в окне навигации. Чтобы изменить эти настройки, на панели инструментов выберите Окно-> AI-> Навигация
enter image description here

Это настройки, которые вы должны будете установить на PLANE NavMeshSurface. Это позволяет достаточно детализировать геометрию NavMe sh, чтобы выпекать отдельные плитки размером 32x16 пикселей. enter image description here

Дополнительная информация:
Я создаю меши, которые пытаюсь запечь, итерируя по TileMap. Это позволяет мне иметь отдельные области с совершенно разными сетками для разных затрат пути. Как я уже говорил выше, выпекание не работает напрямую с этими сетками.

Я могу испечь NavMe sh НЕПОСРЕДСТВЕННО, взяв отдельную плоскость и выпекая эту плоскость ВСЕГДА в сцене. При выпекании выпекается как плоскость, так и NavMeshSurface в GameObject "WalkableSurface". Область, назначенная сгенерированному NavMe sh, определяется настройками области GameObject NavMeshSurface.

1) Почему объект WalkableMe sh не выпекается без этой плоскости?
2) Почему самолет запекает WalkableMe sh?

Вы можете видеть квадратную плоскость, запекающую WalkableSurface ниже. walkablemeshwithplane enter image description here

NavMeshSurface, который я добавляю в код, также сообщает, что пространство имен не найдено, но оно все же добавлено.
Error CS0246 The type or namespace name 'NavMeshSurface' could not be found (are you missing a using directive or an assembly reference?)

1 Ответ

0 голосов
/ 08 мая 2020

В основном все мои проблемы исчезли, когда я решил переместить свой NavMe sh в плоскость XZ.

Эта библиотека ДОЛЖНА РАБОТАТЬ с плоскостью XY, но она явно не работает должным образом. Похоже, что это ПОЧТИ там, но это просто не так.

Процесс выпечки мешей теперь состоит в том, чтобы просто делать меши по очереди, устанавливать тип области, а затем запекать из окна навигации.

...