Hola estoy tratando de hacer un script para dibujar una parabola, cuando se quiera arrojar algun objeto, va algo asi:

estuve utilizando las funciones "LERP", pero no logro dar con la respuesta de poner la posicion Y exacta cuando le afecta la gravedad,
deberia de funcionar con las funciones LERP, pero seguramente no entendi bien su funcionamiento



/*
script que dibuja en pantalla una parabola de trayectoria
de algun objecto a arrojar

argumentos:

0 : sprite a mostrar en la trayectoria
1 : velocidad horizontal
2 : velocidad vertical
3 : valor de la gravedad
4 : posicion X incial
5 : posicion Y inicial
6 : arreglo de diferentes segundos a iterar en el juego

*/


spr = argument[ 0 ];
h = argument[ 1 ];
v = argument[ 2 ];
g = argument[ 3 ];

x_ini = argument[ 4 ];
y_ini = argument[ 5 ];

frames_array = argument[ 6 ];

len = array_length_1d( frames_array );
for( var ind = 0; ind < len; ind +=1 )
{
/**
draw_x = lerp( x_ini, h , frames_array[ ind ] );
draw_y = lerp( y_ini, v - g, frames_array[ ind ] );
show_debug_message( "valores: "+string( draw_x )+" - "+string( draw_y ) )

este no funciono chcear con lo custom
*/


draw_x = x_ini + ( h * frames_array[ ind ] );


aux_v = ( v * frames_array[ ind ] ) + ( g * frames_array[ ind ] )

draw_y = y_ini + aux_v;

draw_sprite( spr, 0, draw_x, draw_y );

}//for





cabe mecionar que para usar el script se tiene que poner en el EV. draw, esto es lo que estoy checando:


//array de prueba
arr[ 0 ] = 5;
arr[ 1 ] = 10;
arr[ 2 ] = 15;
arr[ 3 ] = 20;
arr[ 4 ] = 25;
arr[ 5 ] = 30;
arr[ 6 ] = 35;
arr[ 7 ] = 40;
arr[ 8 ] = 45;
arr[ 9 ] = 50;
arr[ 10 ] = 55;


scr_drawParabolicTrayectory( sp_volcanohudbg_red,
7, -7, 0.9, ob_shaman.x, ob_shaman.y,  arr );



adjunte una imagen para que vean como queda, si se fijan bien, en ningun momento me esta haciendo la trayectoria parabolica, si no, diagonal.
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Las funciones LERP se usan para obtener una interpolación lineal, es decir: cuando sabes el valor de una función en dos puntos puedes obtener el valor en un tercer punto uniendo los puntos 1 y 2 con una recta y viendo dónde caería ese tercer punto. Además, no estás usando las fórmulas correctas del movimiento parábolico, estás usando funciones lineales (el término que multiplica a g debería ir al cuadrado) por lo que siempre te va a salir una recta.

Para lo que quieres hacer no es necesario interpolar, basta con hacer un bucle for calculando los valores del tiro parabólico en cada instante (evento Draw):


var t, drawX, drawY, v0;
vX0 = 5;//Velocidad horizontal inicial
vY0 = -10; //velocidad vertical inicial
for (t=0; t<100; t+=1){
drawX = x + vX0*t;
drawY = y + vY0*t + 0.5*gravity*t^2;
draw_circle(drawX, drawY, 4);
}


Por cierto, mola mucho la estética del juego!

Vracias voy a checarv eso yn despues comemtom comomquedo, h si funciona bien subo elmscript al foro saludos
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala