Ayant fait un jeu du genre il y a longtemps je peux te donner la logique à avoir:
En gros tu pars du cadre qui a une vecteur de vitesse et une force de rotation (torque)
donc le but c'est de trouver la force à ajouter à ces 2 valeurs en fin de step.
La dynamique d'une moto est basée sur ses suspensions. Donc dans une suspension on a deux chose : un ressort et un amortisseur
Donc ton but c'est de trouver l'état de ces suspension à partir de la on peux retrouver les valeurs précédemment citée.
Donc tu met les roue à la position ou elle devrait être si les suspensions étaient relâchées au max et puis tu les remonte dans le sens de la suspension jusqu'a ce que plus collision. tu déduis donc l'état de la suspension appelons la susp1 et susp2.
Pour faire les calcule d'amortissement tu as besoin de la valeur précédente des suspensions soit psusp1 et psusp2.
Maintenant on cherche la force que génère chaque suspension. (0 relaché + appuyée)
facile :
v1=susp1*f1+(psusp1-susp1)*f2
v2=susp2*f1+(psusp2-susp2)*f2
f1 c'est la puissance des ressort, f2 des amortisseurs
maintenant qu'on a ça on peut calculer les forces générée sur le cadre.
(v1 la suspension avant et v2 l'arrière)
torque=(v1-v2)*f3
f=(v1+v2)*f4
ensuite tu utilise f pour modifier hspeed et vspeed en fonction de l'angle du cadre.
et torque tu fais un truc du genre image_angle+=torque
Faut aussi trouver tout les facteurs.
Donc ces calcules sont des approximations et ne donneront pas un résultat qu'on pourrait obtenir avec un moteur physique mais ça s'en rapproche.
Ah et aussi ça tient en compte une moto avec 2 suspension et qui est parfaitement symétrique sur l'axe y si tu vois ce que je veux dire, normalement il faudrait traiter l'arrière différemment (c'est pas très compliqué en gros c'est juste la roue qui bouge différemment, les fonctions d'amortissement restent identique).
Et le problème le plus gênant c'est les collisions frontale, Si tu fais bêtement que monter la roue tu pourrais avec des exagération, je sais plus comment j'avais géré ça. Il me semble que ce que j'avais fait c'est pas tenir en compte le sens de la suspension et faire une sorte de move_contact, et tu prend la distance du move comme valeur de suspension.
Et pour finir ; le jeu que j'avais fait qui utilise cette technique (donc sans moteur physique) :
Super Motocross 2008 (non j'ai plus la source)
Bonne chance