Mayo 30, 2011, 07:34:28 PM Ultima modificación: Junio 01, 2011, 11:35:30 PM por Metal Mario
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

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

[gml]
if distance_to_object("enemigo"<189)
mp_potential_step (x,"enemigo".y,"enemigo","velocidad")[/gml]
ese va directo esquivando lo que sea
Hola de nuevo

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)



#4 Mayo 31, 2011, 05:15:23 PM Ultima modificación: Mayo 31, 2011, 05:52:25 PM por Metal Mario
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

#7 Junio 01, 2011, 12:31:33 AM Ultima modificación: Junio 01, 2011, 11:35:14 PM por Metal Mario
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