@kititnikx

Как сделать обход препятствий в 2.5d Unity-игре?

Я создаю 2.5d игру в Unity. Земля на сцене сделана с помощью Rectangular Tilemap. Сама земля находится на одном уровне по Z. Есть высоты, которые реализованы с помощью OrderInLayer и коллайдеров. Фактически, на сцене есть 3 уровня высоты (отмечены цифрами на рисунке). Каждый уровень состоит из зон с коллайдерами (чтобы с нижнего уровня нельзя было перейти на верхний) и без коллайдеров (например, чтобы игрок мог пройти за скалами). Переход между уровнями происходит при прохождении лестницы (L на рисунке), на которой есть коллайдер, который меняет OrderInLayer и слой сущности. В LayerCollisionMatrix все настроено так, что сущность не взаимодействует с коллайдерами на своем уровне, но взаимодействует с коллайдерами на других уровнях

Я хочу добавить врагов, которые будут следовать за игроком и избегать препятствий. Как я могу это сделать? С помощью NavMesh? С помощью своей собственной реализации алогритма или с помощью сторонних библиотек? Как мне это реализовать?

Я попробовал использовать встроенный NavMesh с дополнением NavMeshPlus. Я создал три объекта с NavMeshSurface на каждом, настроил включенные слои и запек их. Оказалось, что NavMeshSurfaces пересекаются на лестнице. Автоматически враг просто застревал на лестнице. Встроенный NavMeshLink не помог (я просто не мог задать его ширину). Поэтому я написал собственную реализацию NavMeshLink. Но это не очень помогло, потому что враг все равно предпочитает застрять в стене, чем пройти по лестнице

Я попробовал использовать A* Pathfinding Project. Я создал 3 Grid Graph и настроил их по слоям. Враг не хотел просто так перемещаться между графами. Встроенные Link и Link2 не помогли. Я не писал собственную реализацию Link, но думаю, что ситуация будет похожа на NavMesh

Как сделан уровень
67079691ddeb1021437255.jpeg

LayerCollisionMatrix
670796ae4bed1955356968.jpeg

Враг предпочитает уткнуться в стену, чем пройти через лестницу
670796cc8b239291911149.jpeg

NavMesh
670796e995d99988481042.jpeg
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
как вариант просто один навмешь
67080aa7b00d2608603939.jpeg
я вот не знаю как с мостом быть наверно вот там и будет нужен линк
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы