En resumen, estoy haciendo un juego de plataforma. No tengo la edad suficiente para haber tomado Cálculo todavía, así que no sé de derivadas o integrales, pero sé de ellos. El comportamiento deseado es que mi personaje salte automágicamente cuando hay un bloqueo a cada lado de él que está sobre el que está parado; por ejemplo, escaleras. De esta manera, el jugador puede simplemente mantener hacia la izquierda/derecha para subir escaleras, en lugar de tener que enviar la clave de salto también.¿Cálculo? Necesito ayuda para resolver una variable dependiente del tiempo dado algunas otras variables
El problema está en la forma en que implementé el salto; Decidí ir al estilo mario y permitir que el jugador aguante el "salto" más tiempo para saltar más alto. Para hacerlo, tengo una variable 'jump' que se agrega a la velocidad Y del jugador. La variable de salto aumenta a un valor establecido cuando se presiona la tecla 'saltar', y disminuye muy rápidamente una vez que se suelta la tecla 'saltar', pero disminuye menos rápidamente siempre que mantenga presionada la tecla 'saltar', proporcionando así una aceleración continua hasta que tengas 'saltar'. Esto también lo convierte en un bonito y fluido salto, en lugar de una aceleración brusca y visualmente discordante.
Por lo tanto, para tener en cuenta la altura variable de la escalera, quiero poder calcular exactamente qué valor debe obtener la variable 'saltar' para saltar exactamente a la altura de la escalera; preferiblemente no más, no menos, aunque un poco más es permisible. De esta forma, el personaje puede saltar escaleras empinadas o poco profundas sin que se vea raro o lento.
Fundamentalmente, hay 5 variables en juego:
h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>
Each timestep:<br>
j -= 1.5; //the jump variable's deceleration<br>
v -= j; //the jump value's influence on vertical speed<br>
v *= 0.95; //friction on the vertical speed<br>
v += 1; //gravity<br>
p += v; //add the vertical speed to the vertical position<br>
v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>
j-initial is unknown<br>
Teniendo en cuenta todos estos hechos, ¿cómo puedo hacer una ecuación que va a resolver para j?
tl; dr ¿Cómo hago el cálculo?
Muchas gracias a cualquiera que haya llegado hasta aquí y decida resolver este problema.
Editar: Aquí hay un gráfico que hice de un ejemplo en Excel.
Quiero una ecuación que le permitirá a encontrar un valor para un determinado un valor deseado para B. Puesto que la variable salto disminuye con el tiempo, el valor de posición no es sólo una parábola sencilla.
Esto, creo, pertenece a http://math.stackexchange.com/ o http://gamedev.stackexchange.com/ – soulseekah
@ user451527 Permítanme darle la bienvenida a Stack Oveflow y recordar solo tres cosas que Por lo general, hazlo aquí: 1) Cuando recibas ayuda, intenta darle también ** respondiendo preguntas ** en tu área de experiencia 2) ¡lee las preguntas frecuentes! 3) Cuando veas buenas preguntas y respuestas, recíbelas ** usando los triángulos grises **, ya que la credibilidad del sistema se basa en la reputación que los usuarios obtienen al compartir sus conocimientos. Recuerde también aceptar la respuesta que resuelva mejor su problema, si corresponde, ** presionando el signo de la marca de verificación ** –
¡Haga lo que haga, no mezcle math.stackexchange.com con mathoverflow.com! Además, si publica esto en otro sitio, publique un enlace aquí para que los miembros interesados de Stack Overflow puedan ver la discusión allí. – MatrixFrog