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

Поиск пути с учетом направления и скорости поворота

Advanced: Тема повышенной сложности или важная.

#0
(Правка: 20:46) 19:34, 19 дек. 2020

Не могу в навмеше найти возможности для решения двух задач:
1) Мне нужно подойти к точке с определенной стороны. Как это реализовать используя встроенные возможности движка?
2) Мой персонаж не умеет мгновенно поворачиваться. Как мне построить путь с учетом этой особенности?

#1
(Правка: 20:14) 20:12, 19 дек. 2020

такого нет.
думаю нужно делать свой поиск пути но у меня руки не дошли ещё.

костыль который сейчас использую чтоб переместить лодочку из точки А в точку Б с нужным направлением скажем "конечный вектор" в точке Б, и К, я взял его как половина длинны объекта:
берём точку А и форвард вектор генерируем точку (А+форвард*К)
потом получаем предпоследнюю точку: (Б- конечный вектор*К)
находим точки пути от (А+форвард*К) до (Б-конечный вектор*К)

потом берём точку А добавляем в массив точек точки пути и точку Б получаем точки от А до Б без разворотов на старте и с нужным направлением в конце пути(при резких разворотах траектории всё равно происходит разворот на месте)
потом "гладим" траекторию или нет.

по хорошему нужно писать поиск пути человеческий но...но подобные вещи меня затягивают надолго и я пока воздержусь описанным костылём

#2
20:17, 19 дек. 2020

Ну вот и у меня ощущение что нету. Но решил уточнить, вдруг просто не знаю.
Спасибо за информацию!

#3
(Правка: 20:30) 20:30, 19 дек. 2020

Для лодки важно понимать, что некоторые доступные пути ей просто не подходят в силу интерционных качеств, поэтому если делать как положено - надо думать сильно заранее куда пойдет судно, если же надо 100% проходимость везде - то надо делать хаки на физику.

#4
20:39, 19 дек. 2020

Osiris
https://ru.wikipedia.org/wiki/%D0%A1%D1%83%D0%B4%D0%BE%D0%B2%D0%B… 5%D0%BB%D1%8C
суда бывают разные :)

#5
20:44, 19 дек. 2020

uss
Ну это частный случай)

#6
20:51, 19 дек. 2020

всё судоходство пестрит частными случаями:
https://ru.wikipedia.org/wiki/%D0%91%D1%83%D1%80%D0%BB%D0%B0%D0%BA

#7
21:33, 19 дек. 2020

uss
Сдаюсь))) Надо доабвлять поиск пути на суше еще для бурлаков

#8
2:29, 20 дек. 2020

@!!ex
> 1) Мне нужно подойти к точке с определенной стороны. Как это реализовать
> используя встроенные возможности движка?

Строить маршрут не к финальной точке, а к промежуточной, с которой потом двигаться куда надо.

@!!ex
> 2) Мой персонаж не умеет мгновенно поворачиваться. Как мне построить путь с
> учетом этой особенности?

Звучит немного абстрактно. Это гуманоид или вообще автомобиль? Проблема в том что он не успевает довернуться по направлению движения или в том что бьётся об стены? Как вариант, можно попробовать с помощью find path выдернуть контрольные точки, сверять угол поворота персонажа с направлением на контрольную точку и, если они не совпадают с точностью в 5-10 градусов, снижать максимальную скорость.

#9
7:18, 20 дек. 2020

Bodrin
Ситуаиця такая, что мне надо решить - использовать навмеш или своё решение.
Промежуточные точки и вот это всё - это костыли, которые сводят всё к решению не использовать нав меш.

Bodrin
> Это гуманоид или вообще автомобиль?
Это животное. У нас нет анимации поворота на месте. Поэтому он может двигаться только по дуге.

#10
11:13, 20 дек. 2020

Мне вспоминается BDO, как там плывёт корабль по морю используя автопуть. Там тоже у корабля инерциальный поворот. Он просто доплывает не до самой точки, а до определенного радиуса вокруг этой точки, а потом интерполирует своё движение до следующей точки. Иногда корабль заносило так, что он не замечал точку и плыл к ней обратно. А еще он постоянно застревал обо всякую фигню, но это уже совсем другая история.

#11
(Правка: 5:12) 5:09, 21 дек. 2020

@!!ex
> Промежуточные точки и вот это всё - это костыли, которые сводят всё к решению
> не использовать нав меш.

Полностью рабочего решения "из коробки" для персонажей, движущихся по дуге, нет (ну или я его так и не увидел). Кое-что можно порешать через navigation raycast, увеличение размера nav agent и navigation query filters, но, я так понимаю, это тоже будет считаться костылями.

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