Física do veículo com skid

13

Como eu criaria a física do veículo para um carro que pode perder tração? Quero que pareça que o motorista está com o pé chato; portanto, quando você pressiona o acelerador, os carros que dirigem as rodas (traseiras) perdem a tração e tornam um pouco difícil de controlar. Eu também gostaria de poder fazer rosquinhas e "deriva" nas esquinas.

Eu também precisaria saber o quanto "skid" está acontecendo, para poder adicionar uma quantidade proporcional de fumaça e marcas de pneus.

Suponha um jogo de carros em 2D, de cima para baixo.

obrigado

Adam Harte
fonte

Respostas:

10

Esta é uma versão muito simplificada, mas seria adequada para a maioria dos jogos do tipo arcade. Você precisa das seguintes propriedades:

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 quadro:

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

acelerar

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

virar à esquerda

angularVelocity -= turnSpeed;

dirigir para a direita

angularVelocity += turnSpeed;

Para obter um bom desvio, defina arrastar e angularDrag para muito perto de 1, por exemplo, 0,9

Iain
fonte
Então os controles seriam potência (acelerador) e velocidade angular (direção)? Ou estou perdendo alguma transformação?
drxzcl
não é isso - esqueci de explicar como dirigir. Atualizei com a nova variável turnSpeed.
Iain
2

Eu estava lendo um artigo hoje que simula algumas dinâmicas de veículos durante uma colisão e spin-out:

Jing Zhou; Jianbo Lu; Huei Peng, "Dinâmica de veículos em resposta à manobra da técnica de imobilização de precisão", Anais da Conferência de Sistemas e Controle Dinâmicos ASME de 2008

Ele contém um modelo de física que representa o momento de capotagem e a perda de tração dos pneus traseiros durante a guinada causada por uma força de colisão deliberada. Parece interessante para programadores de jogos interessados ​​na dinâmica do veículo durante colisões.

Heath Hunnicutt
fonte
Um estudo, mas infelizmente não é adequado para o problema em questão. O trabalho é uma análise 3D, com rolo de veículo e tudo. Pergunta refere-se ao jogo 2D de vista superior. Assim, física 2D, não 3D.
Bram
1

Geralmente, não recomendo a Física de Bourg para programadores de jogos , mas ele fala um pouco sobre isso no Capítulo 10 (por volta da página 171) e pode dar um ponto de partida.

Infelizmente, o código do veículo no PhysX ainda é 'amostra' e não está bem documentado, portanto você não pode descobrir facilmente como isso funciona. Acredito ter visto o código derivado de sua amostra exibir o tipo de comportamento que você está procurando em 3D, mas é uma simulação de nível inferior ao que eu acho que você deseja.

Tom Hudson
fonte
1

As primeiras coisas que você precisa entender são a "taxa de escorregamento" e o "círculo de tração". A taxa de escorregamento é uma boa aproximação para o comportamento do pneu, com uma relação não linear entre a diferença de ângulo e a força lateral do pneu. Ele também fornece informações de feedback de torque do motorista (para volante de feedback de força).

A versão super simples de ambos os conceitos é a seguinte: quanto maior a diferença de ângulo entre a direção do rolamento e a direção do movimento, mais força existe perpendicular à direção do rolamento (força lateral). Atinge o pico (tipicamente) entre 5 ° e 8 ° e cai a partir daí se o ângulo do pneu for aumentado.

O círculo de tração é basicamente um limitador que corta qualquer vetor de força que sai dele. Ele modela o modo como a aceleração / frenagem pesada reduz a capacidade de direção e vice-versa. O tamanho do círculo de tração (vetor de força máxima de tração) aumenta com a força pressionando o pneu no chão.

Você precisaria modelar a força lateral (de direção) separadamente do torque de acionamento / frenagem (rotacional) e a força de tração oposta do solo.

doug65536
fonte