Diciembre 07, 2015, 08:29:48 PM Ultima modificación: Diciembre 07, 2015, 08:31:33 PM por matiascarpello
Bueno gente, vuelvo a reabrir este tema. No se porque lo eliminaron. Quizás haya sido porque estaba mal explicado y por eso ahora loo explicaré con lujo de detalles.

Antes que nada, por favor, vean la siguiente imagen:



El juego que estoy intentando hacer será algo parecido a esa imagen. Ya tengo listo el sistema de lanzamiento, lo que me falta es dibujar la predicción de donde iría el lanzamiento con el ángulo incluido.

Me esta rompiendo la cabeza el intentar implementarlo. Porque para predecir el trayecto hay que tener en cuenta muchos factores como la gravedad de la pelota, la velocidad, etc.

Supongo que aquí entra en juego parabolas, y mucha geometría.  :'(

Les dejo mi ejemplo de lanzamiento para que se den una idea.


Holacde nuevo, la verdad no es complicado, intentsre explicarte por aca y cuando este en un pc resolvere las dudas que queden y tal ves te mande un ejemplo.

Eso que intentsd hacer se llama tiro parabolico y es facil, por que ese movimiento se predice mediante dos ecuaciones, una para la posicion en X y otra para Y

La de  pos X es facil

x= VelX*t+Xo

Donde VelX es la velocidad en el eje X y t es tiempo puede ser dado por steps... Xo es poscicion inicial

la posicion en Y es un tris mas dificil.
y=1/2*g*t^2+VelY*t+Yo

Donde g es gravedad, VelY velocidad inicial en Y y Yo es posicion inicial en X

Como encuentras todo esto?

En el evento create de tu proyectil deberia haber algo como:

g= algun numero;
Vtotal= algun numero; //velocidad total de donde salen las otras dos
Angulo=point_direction(coordenadas) //lee el manual para saber como funciona esta funcion.
VelX=Vtotal*cos(angulo);
VelY=Vtital*seno del angulo;
T=O;//eso es un cero
Xo=x;
Yo=y;


Y en step algo asi como
// las dos primeras ecuaciones
t+=1


entra a!:

Esas mismas ecuaciones puedes usarlas en el evento draw de donde disparas (usando los mismos parametros del evento create) en alfo que se llama ciclo for, buscalo en el manual, y reemplazas t por i, en las ecuaciones.
entra a!:

#3 Diciembre 07, 2015, 11:58:20 PM Ultima modificación: Diciembre 08, 2015, 12:05:49 AM por penumbra
¿Algo así?


Añadiendo un grano de arena a lo que te mencionó fega. En un sistema ideal, descartando la fricción del aire, el movimiento de un proyectil puede descomponerse en dos partes. El movimiento horizontal y el movimiento vertical. En este caso, la velocidad horizontal no cambia a lo largo de la trayectoria. La velocidad vertical sí, porque se ve afectada por la gravedad

Como dijo fega, lo que tienes que hacer es calcular cada una de esas dos componentes de la velocidad. Luego, como lo que interesa en una gráfica son puntos, esos puntos son distancias, y para obtener una distancia a partir de una velocidad, tienes que involucrar el tiempo. El tiempo, en tu juego, lo puedes variar (manejar la magnitud que quieras), y dependiendo de eso la gráfica resultante cambiará su escala/tamaño.

Más información:
https://en.wikipedia.org/wiki/Trajectory_of_a_projectile

Cita de: fega en Diciembre 07, 2015, 11:44:16 PM
Holacde nuevo, la verdad no es complicado, intentsre explicarte por aca y cuando este en un pc resolvere las dudas que queden y tal ves te mande un ejemplo.

Eso que intentsd hacer se llama tiro parabolico y es facil, por que ese movimiento se predice mediante dos ecuaciones, una para la posicion en X y otra para Y

La de  pos X es facil

x= VelX*t+Xo

Donde VelX es la velocidad en el eje X y t es tiempo puede ser dado por steps... Xo es poscicion inicial

la posicion en Y es un tris mas dificil.
y=1/2*g*t^2+VelY*t+Yo

Donde g es gravedad, VelY velocidad inicial en Y y Yo es posicion inicial en X

Como encuentras todo esto?

En el evento create de tu proyectil deberia haber algo como:

g= algun numero;
Vtotal= algun numero; //velocidad total de donde salen las otras dos
Angulo=point_direction(coordenadas) //lee el manual para saber como funciona esta funcion.
VelX=Vtotal*cos(angulo);
VelY=Vtital*seno del angulo;
T=O;//eso es un cero
Xo=x;
Yo=y;


Y en step algo asi como
// las dos primeras ecuaciones
t+=1


Muchas gracias por la información. Intente aplicar eso que usted me dijo pero aún sigo desconcertado de todo esto. ¿Podría usted cuando tenga tiempo hacerme un ejemplo para así entender mejor su funcionamiento?

corrijo  dos errores

en vez de

y=1/2*g*t^2+VelY*t+Yo


es
y=1/2*g*pow(t,2)+VelY*t+Yo


y en ves de cos() y sin() se usa dcos() y dsin()

adjunto ejemplo
https://www.dropbox.com/s/dq26bxf9k6aq4zh/ejemploParabola.gmz?dl=0
entra a!:


Gente, intenté volcar los ejemplos y documentaciones que aportaron fega y penumbra pero sigo en la misma sin poder resolverlo.

Este es el ejemplo en donde estoy trabajando por si quieren mirarlo.

http://www.mediafire.com/download/6437pqm56q4qji6/SlingShot_Sarb.gmx.rar