Creador: CuervoN(yo)
Descripción: crear un objeto con una velocidad en X y Y determinadas para conseguir un movimiento parabólico que termine por interceptar un objetivo especifico
Versión de GM: Game maker Studio 2
Script:
var xi= argument0*room_speed
var yi= argument1*room_speed
var xf= argument2*room_speed
var yf= argument3*room_speed
var potmin=argument4
var potmax=argument5
var grav=global.grav
xdir=sign(xf-xi)
xf=xi+abs(xf-xi)
if xi==xf{xf=xi+1}
var c= (grav/(2*power(potmin,2)))*(power(xf-xi,2))
while(((power(xf-xi,2)-4*(c*(c-yf+yi))))<0){
potmin+=5
if xi==xf{xf=xi+1}
c= (grav/(2*power(potmin,2)))*(power(xf-xi,2))
}
var res=(-(xf-xi)-sqrt(power(xf-xi,2)-4*(c*(c-yf+yi))))/(-2*c)
ang=radtodeg(arctan(res))
if xdir=-1{ang+=2*abs(ang-90)}
ins=instance_create_depth(x,y,depth,proy)
var pot=min(potmin,potmax)
ins.hspeed=lengthdir_x(pot,ang)/room_speed
ins.vspeed=lengthdir_y(pot,ang)/room_speed
Se debe cambiar el objeto "proy" por el objeto proyectil que desee utilizar.
En el evento step del objeto proyectil debe estar la siguiente linea:
vspeed+=global.grav/room_speed
Notas:
Hay que tener una variable global llamada "global.grav" para la gravedad. valor recomendado: 9.8
Ejemplo:
createproy(x,y,mouse_x,mouse_y,300,600)
Video de ejemplo: