Lo he hecho como ha dicho killer y como ha dicho elviskelley y ninguno me ha funcionado. Voy a explicaros qu? es exactamente lo que quiero hacer: Quiero que un misil detecte cada 5 segundos que instancia tiene m?s cercana, si un misil normal, un misil r?pido o un lanzamisiles, y que se dirija a ?l mediante pathfinding (http://www.comunidadgm.org/index.php?topic=10524.0). Lo del pathfinding lo tengo correcto, pero el problema es que se dirige al objeto en el orden que est? puesto en el evento step. Es decir, ahora mismo tengo en la primera acci?n del evento step lo siguiente:
Y despu?s:
Bien, pues cuando activo el objeto se dirije hacia el lanzamisiles ignorando en todo momento al resto de objetos, e inclusive, tras la destrucci?n del lanzamisiles se quedan quietos, ignorando los que a?n est?n en funcionamiento.
?Cu?l podr?a ser la causa y c?mo podr?a arreglarlo?
Os dejo la informaci?n entera del objeto:
Las variables objetivo fijado las he creado con el fin de que sigan a ese objeto durante un tiempo de 5 segundos, ya que en otros intentos al pasar cerca otro objeto se han desviado hacia ?l.
Código [Seleccionar]
if instance_nearest(x,y,all).object_index=Lanzamisile{}
Y despu?s:
Código [Seleccionar]
if instance_nearest(x,y,all).object_index=Misil{}
Código [Seleccionar]
if instance_nearest(x,y,all).object_index=Misilrapido{}
Bien, pues cuando activo el objeto se dirije hacia el lanzamisiles ignorando en todo momento al resto de objetos, e inclusive, tras la destrucci?n del lanzamisiles se quedan quietos, ignorando los que a?n est?n en funcionamiento.
?Cu?l podr?a ser la causa y c?mo podr?a arreglarlo?
Os dejo la informaci?n entera del objeto:
Código [Seleccionar]
Create Event:
execute code:
var size;
size=32
grilla=mp_grid_create(0,0,room_width/size,room_height/size,size,size)
mp_grid_add_instances(grilla,Maderohor,0)
mp_grid_add_instances(grilla,Maderover,0)
mp_grid_add_instances(grilla,Maderobloqhor,0)
mp_grid_add_instances(grilla,Maderobloqver,0)
ruta=path_add()
set variable objetivofijado to 0
set Alarm 3 to 150
Alarm Event for alarm 0:
if number of objects Lanzamisile is Larger than 0
if objetivofijado is equal to 0
set variable objetivofijado to 1
execute code:
path_end()
if mp_grid_path(grilla,ruta,x,y,instance_nearest(x,y,Lanzamisile).x,instance_nearest(x,y,Lanzamisile).y,1)=1 path_start(ruta,3,0,1)
if objetivofijado is not equal to 0
exit this event
else
exit this event
Alarm Event for alarm 1:
if number of objects Misil is Larger than 0
if objetivofijado is equal to 0
set variable objetivofijado to 2
execute code:
path_end()
if mp_grid_path(grilla,ruta,x,y,instance_nearest(x,y,Misil).x,instance_nearest(x,y,Misil).y,1)=1 path_start(ruta,3,0,1)
if objetivofijado is not equal to 0
exit this event
else
exit this event
Alarm Event for alarm 2:
if number of objects Misilrapido is Larger than 0
if objetivofijado is equal to 0
set variable objetivofijado to 3
execute code:
path_end()
if mp_grid_path(grilla,ruta,x,y,instance_nearest(x,y,Misilrapido).x,instance_nearest(x,y,Misilrapido).y,1)=1 path_start(ruta,3,0,1)
if objetivofijado is not equal to 0
exit this event
else
exit this event
Alarm Event for alarm 3:
set variable objetivofijado to 0
set Alarm 3 to 150
Step Event:
execute code:
image_angle=direction
execute code:
if instance_nearest(x,y,all).object_index=Lanzamisile{}
set Alarm 0 to 1
execute code:
if instance_nearest(x,y,all).object_index=Misil{}
set Alarm 1 to 1
execute code:
if instance_nearest(x,y,all).object_index=Misilrapido{}
set Alarm 2 to 1
Collision Event with object Maderohor:
execute code:
if path_position=1 {
var dir;
dir=point_direction(x,y,other.x+sprite_width/2,other.y+sprite_width/2)
x=x+lengthdir_x(-1,dir)
y=y+lengthdir_y(-1,dir)
}
Collision Event with object Maderover:
execute code:
if path_position=1 {
var dir;
dir=point_direction(x,y,other.x+sprite_width/2,other.y+sprite_width/2)
x=x+lengthdir_x(-1,dir)
y=y+lengthdir_y(-1,dir)
}
Collision Event with object Misil:
create instance of object Return at relative position (0,0)
destroy the instance
Collision Event with object Maderobloqhor:
execute code:
if path_position=1 {
var dir;
dir=point_direction(x,y,other.x+sprite_width/2,other.y+sprite_width/2)
x=x+lengthdir_x(-1,dir)
y=y+lengthdir_y(-1,dir)
}
Collision Event with object Maderobloqver:
execute code:
if path_position=1 {
var dir;
dir=point_direction(x,y,other.x+sprite_width/2,other.y+sprite_width/2)
x=x+lengthdir_x(-1,dir)
y=y+lengthdir_y(-1,dir)
}
Collision Event with object Lanzamisile:
destroy the instance
Collision Event with object Misilrapido:
destroy the instance
Las variables objetivo fijado las he creado con el fin de que sigan a ese objeto durante un tiempo de 5 segundos, ya que en otros intentos al pasar cerca otro objeto se han desviado hacia ?l.