Ver la versión completa : Sistema de "inercia" o "velocidad" para un coche??
Buenass, a ver, tengo unos graficos que hice hace ya mucho tiempo (en epocas de DIV2), y me gustaría programar el juego ya que tego todos los graficos hechos, pero... no se programar un juego de coches!! xD no se como hacer para acelerar, vamos, digo yo que es un sistema de inercia...
Lo dicho, si alguien puede darme algun consejito se lo agradeceria :)
mmmm, es complicadillo, todo depende de lo realista que quieras la física; pero te convendría mirar un poco de cinemática y dinémica. Yo he hecho alguna cutreprueba bastante resultona, pero sin física real por debajo. Todo depende de lo que quieras.
DarkDijkstra
29/09/2007, 11:30
Si no quieres liarte en exceso por ahora (con mucha matemática y tal), un sistema muy sencillito y que más o menos da el pego, es simplemente mantener dos variables para la velocidad, una que sea la velocidad "solicitada" y otra que sea la velocidad "real".
Cuando pulses la tecla acelerar, incrementas la velocidad solicitada.
Por otro lado, en el bucle principal, en cada iteración haces una comprobación, si la velocidad real es menor que la solicitada, la incrementas. La gracia está en que la velocidad solicitada se incremente siempre más rápido que la real (algo asi como en la vida real, tu puedes pisar a fondo el pedal "o velocidad solicitada", pero el coche ira poco a poco acelerando "velocidad real")
sería algo asi como:
bucle principal:
si (tecla_acelerar):
velocidad_solicitada+=2
si (velocidad_real < velocidad_solicitada)
velocidad_real++
Para frenar sería algo parecido, solo que variando los valores, ya que los coches no aceleran "todo lo rápido que pisamos el acelerador" pero generalmente si frenan "todo lo rápido que pisamos el freno".
Espero que te sirva, tal vez se te quede un poco "corto" el sistema en el futuro y prefieras usar fórmulas reales de aceleración, pero para ir haciendo pruebas (o si el juego no va a ser demasiado "realista") da más o menos "el pego"
Yo quiero que el coche acelere y cuando sueletes eo boton vaya perdiendo velocidad xD pero claro, digo yo que la aceleracion dependerá de la masa y potencia del coche (para llegar a una velocidad máxima) y para lo de la inercia dependerá de la velocidad y la misma masa del coche, no???
< - >
Bueno, realista no se... xDD me pondré despues a programar algo a ver si consigo hacerlo medianamente bien y puedo ir ampliando cosas despues xDD
Ya os pondré los graficos que tengo echos, verás que de real no tienen nada xDD
< - >
*****, pues no encuentro el disco con los graficos, tendré que empezar a crear algo de nuevo... xDDD
Bien...
Puede utilizar formulas de energia...
E = 1/2 * m * v^2
asi, por ejemplo, puedes usar tanto la velocidad como la masa para calcular la velocidad maxima
Ejemplo:
supongamos que tienes un juego de coches en plan NFS, con distintos coches, de distintas masas y ademas con distintos componentes.
Motor = 100
Aerodinamica = 20
Turbo L1 = 50
Turbo L2 = 0 (no esta activado )
ruedas = 5
(Esto de realista no tiene mucho pero bueno)
E_max = Motor +aerodinamica + turbo L1 + ...
Entonces, sabiendo la masa del coche podemos despejar la velocidad maxima obtenible por el coche con esas cualidades
v = raiz(2*e_max/m)
Ademas, a cada modificacion no solo tienes porque darle el valor de la energia solo... podrias darles modificadores de masa...
no se si mi idea de calculo de velocidad maxima te valdra... pero bueno, aqui esta.
Sobre como aumentar la velocidad... puedes utilizar este tipo de formulas si no te quitan mucho tienpo de proceso:
v = V_max - V_max * exp^ (-)[(t)/T]
V_max es la velocidad maxima que se puede pillar...
t es el tiempo que se lleva acelerando
T es una constante de cuan rapido acelera... Tu supon que en 5T ya se ha conseguido la velocidad maxima...
:brindis:espero que alguna idea te sirva
josepzin
29/09/2007, 14:20
Jurk... lo has matado!!! :D:D
asi nomas, se me ocurre algo asi:
// calculo de la velocidad
velocidad += aceleracion
// deteccion del acelerador
if( acelerador==pulsado) => aceleracion += 1
else aceleracion -= 1
// validaciones
if( aceleracion < 0 ) => aceleracion = 0
if( aceleracion > aceleracion_maxima ) => aceleracion = aceleracion_maxima
if( velocidad > velocidad_maxima ) => velocidad = velocidad_maxima
No he entendido una mierda Jurk xDD pero gracias de todas formas, algo de eso queria hacer yo para que fuese mas realista, teniendo en cuenta de que habia distintos vehiculos (coches, camiones, motos...) y no todos van a tener la misma masa ni van a tener la misma aceleracion ni la misma velocidad...
Josepzin, eso esta bien, pero claro, eso es para todos los vehiculos igual, deberia de hacer algo para que cada vehiculo tuviese su propia configuracion xDD
No se, de momento seguiré buscando los graficos, sino me pondré a hacer algunos :)
Yo lo hago asi...
velocidad = 0;
aceleracion = 0;
if ( velocidad < velocidad_maxima ) velocidad += aceleracion;
if ( keyacelera ) aceleracion += aceleracion_vehiculo;
if ( aceleracion > aceleracion_maxima ) aceleracion = aceleracion_maxima;
aceleracion -= (aceleracion / 2);
Basicamente es eso, mpuedes regular la aceleracion con aceleracion_vehiculo, por ejemplo teniendo encuenta el peso, puedes hacer:
aceleracion_vehiculo = 1 / peso_vehiculo;
contra mas pese menos aceleracion tendra, luego ya tienes que ir jugando con los valores para conseguir la velocidad y aceleraciones que quieras.
enkonsierto
30/09/2007, 17:48
joanvr tenía bastantes formulas de física.. habla con él... :)
vaya, quizás también deba hablar yo con el..
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.