He conseguido hacer una caja de cambios que funcione como en la realidad gracias a esta formula:
//Te calcula la velocidad del coche, dependiendo del ratio de la marcha, lógicamente varía el resultado, marcha mas larga menor es el //numero, marcha mas corta mayor es el mismo, EJ:
speed = ((rpm * wheelratio) / (diferencialratio * marcha1 * 336.0));
// Calcula los rpm que lleva el coche en X marcha a X velocidad (sirve para cuando reduces o aumentes marchas, coincida las vueltas de la //marcha actual con la siguiente y tenga la misma velocidad:
//ejemplo: 8000rpm en primera = 40
// 7000rpm en segunda = 40 (es un ejemplo!)
//así puedes reducir marchas y aumentarlas y siga calculando de manera correcta la velocidad
rpm = (speed * diferencialratio * machanumerooo * 336.0) / wheelratio;
Ahora solo me falta todo lo demás, calcular la potencia del coche, y la resistencia del aire inclusive dependiendo de su densidad