Necesito saber como puedo hacer que un misil disparado se dirija a un enemigo? Lo pregunto porque no se usar point_direction y no se si este sirva para eso. Me explico:
El misil es disparado a una cierta direccion, pasa un tiempo y empieza a localizar un enemigo, despues debe aumentar o reducir ciertos grados de direccion dependiendo de donde se localize el objetivo. Pero no quiero usar move_towards_point porque cuando encuentra un objetivo hace un trazo recto, y yo necesito que haga un trazo digamos redondeado. Como puedo hacer esto?
Ah, y mi juego es un plataformas/shooter. Tipo Mario pero con armas.
como dices tu...puedes usar point_direction para obtener el angulo, luego hacer tus calculos para no hacer un giro abrupto(es decir solo darle la direccion del angulo al object y gire violentamente)
No se si entiende no soy bueno para explicar xD
Salu2
[gml]
if distance_to_object("enemigo"<189)
mp_potential_step (x,"enemigo".y,"enemigo","velocidad")[/gml]
ese va directo esquivando lo que sea
Pues el misil al crearse podria contener una alarma que ejecute esto
enemigocercano=instance_nearest(x,y,Obj_Enemigo)
mp_potential_step(enemigocercano.x,enemigocercano.y,2,false)
No, lo que necesito es que se dirija al objetivo, pero no quiero que esquive los objetos. No se si me explico bien, debe aumentar o reducir unos grados dependiendo de donde se encuentre.
creo que quieres un misil que doble hacia ti ignorando todo lo demas...
encontre un codigo que habia hecho antes para eso...
create:
[gml]speed=4.8;
ts=1.8;
base_ts=ts;
dist=point_distance(x,y,jugador.x,jugador.y);
dist_prev=dist;[/gml]
step:
[gml]dir=point_direction(x,y,jugador.x,jugador.y);
if abs(direction-dir)<180
{
if direction<dir direction+=ts; else if direction>dir direction-=ts;
}
else
{
if direction<dir direction-=ts; else if direction>dir direction+=ts;
}
dist_prev=dist;
dist=point_distance(x,y,jugador.x,jugador.y);
if abs(dist_prev-dist)<1.2 ts+=base_ts/8; else ts-=base_ts/8;
ts=max(ts,base_ts);
image_angle=direction; //esta linea solo funciona en pro (o standard...) si no tienes gm registrado quitala[/gml]
jugador.x y jugador.y deben ser cambiados dependiendo del objeto al que quieras seguir. si cambias la variable ts el misil doblara mas rapido o mas lento
Bueno yo lo probe y esta bastante bueno para mi (no lo suere)
Solo le faltyaria a?adir las colisiones con los pisos y con el jugador :D
SAludos
Este objeto no seguir? al jugador, seguir? a un enemigo, y este con otros tipos de enemigos mas llevan un parent. El que haya varios que yo haya especificado no afectar? en nada?
Verifico y edito. Me lo esperaba mas facil, pero veo que todo esto debe ser un lio para programarlo. :)
EDIT: Funciona, gracias. Pero talvez funcione lo que dice Rubeno acerca de dirigirse a dos objetivos existentes. Vere que tal.
Mientras tanto, gracias. Resuelto.
Bueno entonces la keras utilizar como arma no ?
Podrias repetir el codigo varias veces es decir un step con un codigo extenso que el lo mismo pero con varios enemigos o varios codes para cada enenmigo
y lo mismo en create
Yo empezaria a intentarlo xD