Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: (AYUDA) Hola a todos, necesito ayuda con un movimiento parabólico :( GMS 1.4  (Leído 949 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado AlexWood

Hola a todos, estoy haciendo un juego y necesito un movimiento parabólico, quiero que una granada   vaya a  un punto alto, con la distancia, y  recorra entre el punto del soldado y caiga  donde fue puesto el mouse para lanzar.  Pero no se hacerlo y por eso les estoy pidiendo ayuda  :'(

Como en el ejemplo del video de abajo :
https://photos.app.goo.gl/3rqAwf17PHWJ97Me9]
« Última modificación: Mayo 04, 2021, 07:39:24 pm por AlexWood »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Void

Es relativamente simple, lo primero es, en el evento Create, determinar el punto de origen desde donde sale la granada y el punto final donde caerá la granada, y usar esos puntos para determinar la distancia y dirección en que la granada va a viajar, e inicializamos una variable z para la altura del vuelo de la granada:

Dest_x = mouse_x;
Dest_y = mouse_y;

Dist = point_distance(xstart,ystart,Dest_x,Dest_y);
Dir = point_direction(xstart,ystart,Dest_x,Dest_y);

z = 0;

Luego en cada paso movemos la instancia la cantidad apropiada y calculamos la altura que tendría la granada en ese paso:

Dist_Rem = point_distance(x,y,Dest_x,Dest_y)

x += lengthdir_x(min(Dist_Rem,8),Dir)
y += lengthdir_y(min(Dist_Rem,8),Dir)

z = sin((((Dist_Rem)/Dist))*pi)

El calculo de z es simple, tomamos la distancia que le falta a la granada por viajar y la dividimos entre la distancia total que debe viajar para normalizar el valor, tomamos dicho valor y lo multiplicamos por pi para poder aprovechar la parábola de la función matemática seno.

Ahora simplemente se dibuja manualmente el sprite del objeto, multiplicando z por el valor de la altura máxima que la granada puede alcanzar y restándole el resultado a al valor y. Recomendaría en lugar de usar un valor estático para la altura máxima usar un factor de la distancia total:

draw_sprite_ext(sprite_index,image_index,x,y-z*(Dist/3)

Dejo un ejemplo con el código:

 
Los siguientes usuarios dieron las gracias a este tema: AlexWood


 


Warning: Parameter 1 to spoiler_buffer() expected to be a reference, value given in Unknown on line 0

Warning: Parameter 1 to custom_report_ob() expected to be a reference, value given in Unknown on line 0