Войти
ПрограммированиеФорумОбщее

Управление аркадной гоночной машинкой с клавиатуры.

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

Страницы: 1 2 3 4 Следующая »
#0
22:26, 13 мар. 2019

Делаю аркадную гоночку, с какими то намеками на физику.

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

Вопросы: как и из каких параметров выбирать угол поворота (максимальный) передних колес авто (при условии управления с клавы). На что вообще смотреть?
Как выбирать скорость поворота этого самого руля? Зависит ли она от скорости или нет? Руль возвращается в положение к нулю с той же скоростью, что при нажатии клавиш поворота, или он должен возвращаться в положение к нулю быстрее? Как корректировать угол поворота руля при заносе?

Я сейчас использую модель с кусочно линейной интерполяцией максимального угла поворота, но не могу подобрать правильные параметры углов поворота от скорости. Могу скинуть таблицу, если надо.

Если важно, максимум бокового трения на колесе при 5 градусах, но если поворачивать по нему переднюю ось сносит в сторону поворота, а задницу выносит вперед (при достаточной скорости, где-то с 70+ км / ч).

Zab
> Когда займешься и первичную проработку по верхам проведешь, вспомни про меня,
> много чего порассказать могу.
> И не только про аэродинамику, про управление камерой, про сетевую
> синхронизацию, про комфортное управление с клавиатуры, да много еще чего
> понаберется.

Что ж, твой выход ) )


#1
(Правка: 0:28) 0:26, 14 мар. 2019

vindast
У меня для клавиатуры простая обратно-пропорциональная зависимость от скорости неплохо работала (но не на угол, а на компоненту вектора направления колес).
Вот на эту компоненту:
comp | Управление аркадной гоночной машинкой с клавиатуры.
Ну и зависимость была в духе:
offset = 1 / (length(velocity) * a + b)
Где a b подбираются эксперементально.

upd. Принцип подбора простой. Делаешь очень маленькую скорость, и подбираешь b такой, чтобы рулить комфортно было на маленькой скорости. Потом на большой скорости уже подбираешь коэффициент a

#2
11:14, 14 мар. 2019

vindast
> углы поворота руля для движения на больших скоростях
А как еще? Ты хочешь поворачивать на больших скоростях? Такого не существует.

#3
(Правка: 14:43) 14:41, 14 мар. 2019

vindast
Я делал пример аркадной физики с исходником: ss2d (чтобы поехать - включи передачу, A-Z её повышают-понижают). Вполне управляется и без зависимости руления от скорости.
В более сложной гоночке AoS2 (тоже с исходником) я сделал зависимость скорости поворота руля от скорости машины, так оно, конечно, лучше, и напоминает эффект того, что руль при большой скорости "тяжелеет" из-за инерции вращения колёс. Предел руления не менял, но с заносами я не боролся, без них не кайф.

#4
15:04, 14 мар. 2019

MrShoor
> offset = 1 / (length(velocity) * a + b)
Сегодня буду пробовать. Я ж правильно понял что offset  и есть максимальный угол поворота. Если так то b должно быть числом около единицы.

Mikle
> Я делал пример аркадной физики с исходником: ss2d
Тут я так понял что все в посчитано в лоб.

Mikle
> В более сложной гоночке AoS2
Чем ее собрать?

#5
15:09, 14 мар. 2019

vindast
> Тут я так понял что все в посчитано в лоб.
Да, но учтены даже занос и пробуксовка.
vindast
> Чем ее собрать?
Это VB6, но там есть готовый EXE.

#6
17:11, 14 мар. 2019

Mikle
> Это VB6, но там есть готовый EXE.
там есть только shader compiller

#7
17:48, 14 мар. 2019

У меня на все детство суровый баттхерт оттого, что ровно во всех симуляторах рейсинга девяностых и начала нулевых (потом я в них уже не играл) руль отклоняется максимум на 30 градусов, в отличие от реальности, где его можно крутить и крутить..
Не надо так! Если я хочу убиться, резко выкрутив руль на 250 км/ч - дайте мне убиться!
Очень хотелось крутить руль самостоятельно, а не с этим тупым автоподруливанием, которое еще и медленно отрабатывало при отпускании клавиш на большой скорости.

#8
17:54, 14 мар. 2019

vindast
> там есть только shader compiller
Возможно, твой антивирусник постарался. Я сейчас скачал и проверил, в папке AoS2 лежит AoS2.exe.

#9
18:19, 14 мар. 2019

Mikle
> Возможно, твой антивирусник постарался. Я сейчас скачал и проверил, в папке
> AoS2 лежит AoS2.exe.
Да, действительно. Запустил.
И возник вопрос. Какую физическую модель ты использовал? Модель реально крутая, графен, звук прикрутить и можно делать ааа)

#10
18:27, 14 мар. 2019

vindast
> Я ж правильно понял что offset  и есть максимальный угол поворота.
Почти. Это тангенс угла.

#11
20:00, 14 мар. 2019

vindast
> Какую физическую модель ты использовал?
Модель самописная, не на много отличается от ss2d, добавлены мелочи, типа той же зависимости скорости реакции руля от скорости машины, крены на поворотах и т. п.

#12
20:57, 14 мар. 2019

Mikle
Блин, даже в прототипе — залип, нормальная тема!)

#13
22:41, 14 мар. 2019

Mikle, блин. Я так и не нашел где ты корректируешь поворот руля. Я пытался разобраться с твоей моделью но ничего так и не понял. У тебя получается что ты все в лоб считаешь. То есть по факту машинка вообще двумерная у тебя, и система всего из одного тела - машинки.

#14
23:01, 14 мар. 2019

vindast
Это в модуле cCarPhisic.cls:

t = DTime * CtrlSens
...
t = t / (1.5 + Speed * 0.15)
DTime - время с прошлого расчёта, CtrlSens - чувствительность управления, Speed - скорость машины.
У меня там, конечно, код ужасный, делал игру на конкурс, прямо в коде подбирал константы.
vindast
> машинка вообще двумерная у тебя, и система всего из одного тела - машинки.
Да, наклоны есть, но от земли машинку не оторвёшь, реально там 2D.
Делал я и реальное 3D, но это уже хардкор, а не аркадная гоночка:
AoS3
исходник
Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее