Навмэш На Костылях – Маленькие Хитрости

Продолжаю играть в Unity3d. В этом посте я попытаюсь рассказать вам, как можно использовать грязный костыль, чтобы обойти статичность компонента NavMesh. Для обработки движения персонажей и игрока, помимо всего прочего, движок предлагает универсальный и достаточно мощный инструмент — NavMesh. По сути, это двухмерная фигура — меш, который натянут на местность и позволяет обрабатывать движения NavMeshAgent.

НавМэш на костылях – маленькие хитрости

Однако есть небольшая проблема.

По большому счету NavMesh статичен и рассчитывается во время разработки в редакторе.

Представим себе такую ситуацию: у нас мягко покачивается на волнах корабль и его отважный капитан бесцельно бродит по палубе.



НавМэш на костылях – маленькие хитрости

Проблема в том, что мы не можем применить NavMesh к модели корабля в лоб.

Модель динамическая, сетка статичная.

Я нашел следующее решение: — отключить корабельный коллайдер (компонент, отвечающий за физику модели) — создать несколько коробок, имитирующих колоду — сгенерировать NavMesh для этих ящиков — отключить компоненты, отвечающие за отрисовку боксов, т.е.

сделать их невидимыми Вуаля — капитан лихо шлёпает по натянутому на невидимые ящики NavMesh. При небольших степенях покачивания корабля не очень заметно, что он «проваливается» немного ниже палубы.

Сфера применения костыля достаточно широка.

Вы можете, например, построить меш для птиц/драконов, имитировать левитацию, построить невидимые мосты и т.д. Есть, конечно, дополнительные инструменты — NavMeshObstacles, т.е.

динамические препятствия, но и с ними проблем хватает. Если у кого-то есть идеи, как сделать лучше, поделитесь опытом.

Теги: #unity3d #Разработка игр #Разработка игр #unity

Вместе с данным постом часто просматривают: