Física de vehículos con patín

13

¿Cómo haría para crear física de vehículos para un automóvil que pueda perder tracción? Quiero que parezca que el conductor tiene un pie plano, por lo que cuando presiona el acelerador, los autos que conducen (las ruedas traseras) pierden tracción y dificultan el control. También me gustaría poder hacer rosquillas y "deriva" alrededor de las esquinas.

También necesitaría saber cuánto "deslizamiento" está sucediendo, para poder agregar una cantidad proporcional de humo y marcas de neumáticos.

Suponga un juego de autos estilo 2d, de arriba hacia abajo.

Gracias

Adam Harte
fuente

Respuestas:

10

Esta es una versión muy simplificada, pero estaría bien para la mayoría de los juegos tipo arcade. Necesita las siguientes propiedades:

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

cada cuadro:

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

acelerar

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

girar a la izquierda

angularVelocity -= turnSpeed;

girar a la derecha

angularVelocity += turnSpeed;

Para obtener una buena deriva, establezca drag y angularDrag en muy cerca de 1, por ejemplo, 0.9

Iain
fuente
Entonces, ¿los controles serían potencia (acelerador) y velocidad angular (dirección)? ¿O me estoy perdiendo alguna transformación?
drxzcl
no, eso es todo. Olvidé explicar cómo conducir. Se han actualizado con la nueva variable turnSpeed.
Iain
2

Hoy estaba leyendo un artículo que simula algunas dinámicas del vehículo durante una colisión y un spin-out:

Jing Zhou; Jianbo Lu; Huei Peng, "Dinámica del vehículo en respuesta a la maniobra de la técnica de inmovilización de precisión", Actas de la Conferencia de Sistemas Dinámicos y Control de ASME 2008

Contiene un modelo de física que representa el momento de vuelco y la pérdida de tracción del neumático trasero durante el guiñada causada por una fuerza de colisión deliberada. Parece interesante para los programadores de juegos interesados ​​en la dinámica del vehículo durante las colisiones.

Heath Hunnicutt
fuente
Todo un estudio, pero desafortunadamente no es adecuado para el problema en cuestión. El documento es un análisis 3D, con rodaje de vehículos y todo. La pregunta pertenece al juego de vista superior en 2D. Así, física 2D, no 3D.
Bram
1

En general, no recomiendo la física de Bourg para programadores de juegos , pero habla un poco sobre esto en el Capítulo 10 (alrededor de la página 171), y podría darle un punto de partida.

Desafortunadamente, el código del vehículo en PhysX todavía es 'muestra' y no está bien documentado, por lo que no puede entender fácilmente cómo funciona. Creo que he visto que el código derivado de su muestra muestra el tipo de comportamiento que estás buscando en 3D, pero es una simulación de nivel inferior de lo que creo que quieres.

Tom Hudson
fuente
1

Lo primero que debe comprender es la "relación de deslizamiento" y el "círculo de tracción". La relación de deslizamiento es una buena aproximación para el comportamiento del neumático, con una relación no lineal entre la diferencia de ángulo y la fuerza lateral del neumático. También le proporciona información de retroalimentación de torque del conductor (para el volante de retroalimentación de fuerza).

La versión súper simple de ambos conceptos es la siguiente: a mayor diferencia de ángulo entre la dirección de rodadura y la dirección de movimiento, más fuerza hay perpendicular a la dirección de rodadura (fuerza lateral). Alcanza el pico a (típicamente) tal vez de 5 ° a 8 ° y se cae desde allí si se aumenta el ángulo del neumático.

El círculo de tracción es básicamente un limitador que corta cualquier vector de fuerza que salga de él. Modela la forma en que la aceleración / frenado intensas reducen la capacidad de dirección, y viceversa. El tamaño del círculo de tracción (vector de fuerza de tracción máxima) aumenta con la fuerza que presiona el neumático contra el suelo.

Debería modelar la fuerza lateral (dirección) por separado del par de conducción / frenado (rotacional) y la fuerza de tracción opuesta desde el suelo.

doug65536
fuente