Войти
UnityФорумПрограммирование

как правильно настроить Nav Mesh Agent?

#0
10:19, 27 окт 2022

Всем добрый день. У меня появилась проблема: делаю игру про корабли и  вешаю на корабли Nav Mesh Agent, но корабли длинные по оси z, а нав меш это всегда цилиндр. Так вот поэтому у меня либо он слишком большой и выходит за рамки корабля, либо всегда маленький и корабли проходят друг сквозь друга. А еще при добавлении Nav Mesh Obstacle эти два компонента могут вызывать ошибки. Для большей наглядности прикреплю фото:

Изображение

либо вот так:

Изображение

Оба варианта мне не подходят, потому что либо объект проходит в некоторых моментах через другие такие же корабли, либо, если nav mesh большой как на картинке 2, то они тоже ведут себя некорректно. Может кто-нибудь подскажет как действовать в такой ситуации? Nav Mesh Agent убрать нельзя. Я бы хотел его настроить по границам корабля, но так чтобы он не вылазил за его пределы, т.е. как какой-нибудь Box Collider, но как я понимаю такое невозможно. Как в таких случаях поступают?

#1
9:44, 28 окт 2022

0. Устанавливаем коллайдеры по модели.
1. Просчитываем путь навмешем, но не двигаем объект через этот компонент.
2. Физично толкаем объект по пути (достигая каждой точки в небольшом радиусе, начинаем двигаться к следующей точке).

При пересечении путей двух кораблей они будут сталкиваться:
а. делаем материал с нулевым сопротивлением - они будут проскальзывать друг рядом с другом.
б. делаем на носу корабля (или по всей модели) Ареа Эффектор и коллайдеры, отталкивающие объекты попадающие в коллайдер. Т.о. корабли будут проскальзывать, не касаясь друг друга.

#2
11:10, 31 окт 2022

Murlita
спасибо большое за помощь, но тогда еще один вопрос: а как физически толкать объект по просчитанному пути?

#3
9:29, 1 ноя 2022

DenisU,
Я имею ввиду, используя встроенную физику юнити:
На объект риджитбоди кидаем, и применяем к объекту силу AddForce(power*direction) в нужном направлении.
Направление = нужная точка - текущее положение.

UnityФорумПрограммирование