Фізика транспортного засобу із заносом


13

Як би я пішов про створення фізики автомобіля для автомобіля, який може втратити тягу? Я хочу, щоб це здавалося, що у водія плоска нога, тому, коли ви натискаєте на газ, автомобілі, які ведуть (задні) колеса, втрачають тягу, і це робить дещо важким контроль. Я також хотів би вміти робити пончики та «дрейфувати» по кутах.

Я також повинен знати, скільки "ковзань" відбувається, тому я можу додати пропорційну кількість диму та позначок на шинах.

Припустимо, 2-ї автомобільна гра в стилі зверху вниз.

Спасибі

Відповіді:


10

Це дуже спрощена версія, але цілком підійде для більшості ігор типу аркада. Вам потрібні такі властивості:

positionX, positionY - where the car is
velocityX, velocityY - speed on each axis
drag - how fast the car slows down
angle - the rotation of the car, in radians
angularVelocity - speed the car is spinning, in radians
angularDrag - how fast the car stops spinning
power - how fast car can accelerate
turnSpeed - how fast to turn

кожен кадр:

positionX += velocityX
positionY += velocityY
velocityX *= drag
velocityY *= drag
angle += angularVelocity
angularVelocity *= angularDrag

прискорити

velocityX += sin(angle) * power;
velocityY += cos(angle) * power;

рушити ліворуч

angularVelocity -= turnSpeed;

керувати правою

angularVelocity += turnSpeed;

Щоб отримати хороший дрейф, встановіть перетягування та кут Drag дуже близьким до 1, наприклад 0,9


Отже, управління було б потужністю (дросель) і кутовою швидкістю (рульове управління)? Або я пропускаю якусь трансформацію?
drxzcl

ні, це все - забув пояснити, як керувати. Оновили нову змінну turnSpeed.
Iain

2

Сьогодні я читав статтю, яка імітує деяку динаміку транспортного засобу під час зіткнення та віджимання:

Цзін Чжоу; Цзянбо Лу; Хуей Пенг, "Динаміка транспортних засобів у відповідь на маневр техніки точної іммобілізації", Матеріали 2008 р. Конференція з питань динамічних систем та управління ASME

Тут міститься фізична модель, яка представляє момент перекидання і втрату тяги задньої шини під час позіхання, спричинену навмисною силою зіткнення. Ігровим програмістам, які цікавляться динамікою транспортних засобів під час зіткнень, здається цікавим.


Досить дослідження, але, на жаль, не підходить для проблеми. Папір - це тривимірний аналіз, з рулоном транспортного засобу та ін. Питання стосується двовимірної гри вид зверху. Таким чином, 2D фізика, а не 3D.
Брам

1

Я, як правило, не рекомендую фізику Бурга програмістам ігор , але він трохи про це розповідає в главі 10 (приблизно на сторінці 171) і може дати вам вихідну точку.

На жаль, код транспортного засобу в PhysX все ще є "зразком" і не добре задокументований, тому ви не можете легко зрозуміти, як це працює. Я вважаю, що я бачив код, отриманий з їх вибірки, таку поведінку, яку ви шукаєте в 3D, але це симуляція нижчого рівня, ніж я думаю, що ви хочете.


1

Перше, що вам потрібно зрозуміти, це "коефіцієнт ковзання" та "кола тяги". Коефіцієнт ковзання - це гарне наближення для поведінки шини з нелінійним співвідношенням між різницею кута та бічною силою шини. Він також надає інформацію про зворотний зв'язок водія (для рульового колеса зворотного зв'язку).

Суперпростий варіант обох понять такий: чим більше різниця кутів між напрямком кочення та напрямком руху, тим більше сили має перпендикуляр до напрямку кочення (бічна сила). Він досягає максимуму (зазвичай) може бути від 5 ° до 8 ° і відпадає звідти, якщо кут шини збільшений.

Тягове коло - це в основному обмежувач, який відсікає будь-який вектор сили, що виходить за його межі. Він моделює так, що великі прискорення / гальмування зменшують рульову здатність, і навпаки. Розмір тягового кола (вектор максимальної сили тяги) масштабується із силою, що притискає шину до землі.

Вам потрібно буде моделювати бічну (рульову) силу окремо від ведучого / гальмівного (обертального) крутного моменту та протилежної сили тяги від землі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.