Продолжаю играть в Unity3d.
В этом посте я попытаюсь рассказать вам, как можно использовать грязный костыль, чтобы обойти статичность компонента NavMesh.
Для обработки движения персонажей и игрока, помимо всего прочего, движок предлагает универсальный и достаточно мощный инструмент — NavMesh. По сути, это двухмерная фигура — меш, который натянут на местность и позволяет обрабатывать движения NavMeshAgent.
Однако есть небольшая проблема.
По большому счету NavMesh статичен и рассчитывается во время разработки в редакторе.
Представим себе такую ситуацию: у нас мягко покачивается на волнах корабль и его отважный капитан бесцельно бродит по палубе.
Проблема в том, что мы не можем применить NavMesh к модели корабля в лоб.
Модель динамическая, сетка статичная.
Я нашел следующее решение: — отключить корабельный коллайдер (компонент, отвечающий за физику модели) — создать несколько коробок, имитирующих колоду — сгенерировать NavMesh для этих ящиков — отключить компоненты, отвечающие за отрисовку боксов, т.е.
сделать их невидимыми Вуаля — капитан лихо шлёпает по натянутому на невидимые ящики NavMesh. При небольших степенях покачивания корабля не очень заметно, что он «проваливается» немного ниже палубы.
Сфера применения костыля достаточно широка.
Вы можете, например, построить меш для птиц/драконов, имитировать левитацию, построить невидимые мосты и т.д. Есть, конечно, дополнительные инструменты — NavMeshObstacles, т.е.
динамические препятствия, но и с ними проблем хватает. Если у кого-то есть идеи, как сделать лучше, поделитесь опытом.
Теги: #unity3d #Разработка игр #Разработка игр #unity
-
Фракийский Язык
19 Oct, 24 -
Вебинар «Как Проводить Code Review»
19 Oct, 24 -
Итак, Вышел Centos 5.9.
19 Oct, 24 -
Минск Астрокосмический
19 Oct, 24