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

подскажите как сделать плавный поворот модельки машины

Страницы: 1 2 Следующая »
#0
21:35, 22 сен. 2018

подскажите как сделать плавный поворот модельки машины
пока это выглядит так:


#1
21:49, 22 сен. 2018

одна из проблем в том, что Чтобы начать поворот надо знать ноду n + 2, где n - наша последняя нода, чтобы как минимум рассчитать когда нам начать поворот. На пол пути мы говорим: все, забудь, перестрой маршрут, не доехав до рассчитанной конечной точки. Таким образом мы перестраиваем маршрут на основе имеющихся данных из прошлой точки и машина начинает исполнять непонятные вещи

#2
23:55, 22 сен. 2018

Пока что автобус двигается как одна точка в пространстве, а тебе нужно двигать его как 2 колесных пары. А потом уже можно и подумать о том когда поворачивать.

#3
(Правка: 2:21) 2:11, 23 сен. 2018

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

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

Если продолжить идею Андрей5000, то вместо одной точки, по траектории двигать две на расстоянии колес, точно так же как сейчас двигается сам автобус. Прямая между этими точками будет показывать поворот автобуса, а ее цент его положение.

#4
6:05, 23 сен. 2018

спасибо за ответы! будем пробовать )

#5
6:07, 23 сен. 2018

Еще задача в том, что путь может прерываться в любой момент, включая повороты, что надо учитывать столкновения. Может у кто то может поделиться готовым кодом? )

#6
6:49, 23 сен. 2018

Alexey_M
> готовым кодом
Эх, так и знал

#7
7:11, 23 сен. 2018

MrOcelot
ну а зачем изобретать велосипед, если кто то может помочь )

#8
8:31, 23 сен. 2018

Alexey_M
Поворот идёт вокруг середины задней оси, а не вокруг центра машины.

> На пол пути мы говорим: все, забудь, перестрой маршрут, не доехав до
> рассчитанной конечной точки. Таким образом мы перестраиваем маршрут на основе
> имеющихся данных из прошлой точки и машина начинает исполнять непонятные вещи
Всё верно. Машина на перекрёстке уже начала поворот направо, как выяснилось, что надо налево. Нужно совершать маневр, нужен некий ИИ, принимающий решение.

#9
12:47, 19 янв. 2019

Я тут вспомнил теоретическую механику (прям флешбек такой)
Надо вам автобус представить как отрезок между колесами, и курить в сторону кинематики отрезка, задние колеса имеют свой вектор движения, передние - свой по направлению колес, а вот проекции векторов скорости на отрезок всегда равны. Центр отрезка - центр автобуса, таким образом можно вполне естественные повороты сделать не используя wheelcollider

#10
12:52, 19 янв. 2019

Dent
Спасибо! Посмотрим и такой вариант.

#11
4:55, 20 янв. 2019

Alexey_M
Надо центр вращения сдвинуть назад как Mikle говорит.

#12
12:10, 20 янв. 2019

eDmk
Ок. И так тоже попробуем. Спасибо.

#13
22:31, 20 янв. 2019

Можно задать радиус поворота (R), принять за центр автобуса середину задней оси, и на расстоянии этого радиуса от точки поворота двигать автобус не прямолинейно, а вокруг центра поворота, который лежит на одной прямой с задней осью и удален от центра этой оси на радиус поворота. Как только автобус выходит на направление до следующей точки заканчивать поворот.
Изображение
Угловую скорость (w) можно найти из соотношения V=wR, где V - линейная скорость.
Это кинематический вариант решения проблемы. Намного проще и легче физического моделирования. Столкновения можно реализовать отключением данной логики и включением физики.
Другой вариант - прикладывать силы и писать ИИ, который сумеет с ними совладать для управления машинкой.

#14
(Правка: 23:14) 23:13, 20 янв. 2019

Траффик это отдельная игровая подсистема.
https://forum.unity.com/threads/open-source-ai-traffic-system-tha… e-box.388605/
Ты должен уметь:
ехать по сплайну, возвращаться на сплаин, парковаться (arrive), стииринг бихейворить за произвольной точкой, пулять лучи для дистанции.

Страницы: 1 2 Следующая »
ПрограммированиеФорумФизика