nota: uso GM8

estoy haciendo un juego TD y quiero hacer que las torres de arqueros siempre den al objetivo y que no fallen explico:

si una torre dispara la flecha sale disparada a donde esta el enemigo , no a donde ira y aveces falla , lo que quiero es que la flecha siga un poco al enemigo y no falle

para que la torre dispare uso este codigo

target=instance_nearest(x,y,persona_con_palo)
if distance_to_object(target) < 250
{
i=instance_create(x,y,flecha);
i.direction=direction;
}

y para que el enemigo se mueva este

path_start(path1, 3, 0, 1);

STEP de la torre
[gml]
target=instance_nearest(x,y,persona_con_palo)
if distance_to_object(target) < 250
{
   if !instance_exists(flecha) {
   i=instance_create(x,y,flecha);
  }
   i.enemyX = target.x;
   i.enemyY = target.y;
}
[/gml]


Create de la flecha
[gml]
enemyX = x;
enemyY = y;

pathdir = path_add();

path_add_point(pathdir,x,y,room_speed);
path_add_point(pathdir,enemyX,enemyY,room_speed);

alarm[0] = room_speed*0.5;
[/gml]

Alarm[0]
[gml]
path_start(pathdir,room_speed,path_action_stop,0)
[/gml]

STEP de la flecha
[gml]
l = path_get_length(pathdir);
p = path_position;
d = l*p;

path_change_point(pathdir,1,enemyX,enemyY,room_speed);

l = path_get_length(pathdir);
path_position = d/l;
[/gml]

Lo probe en GM Studio asi que no estoy seguro si funcionara en GM8

Cita de: desplo en Noviembre 14, 2017, 02:06:22 AM
STEP de la torre
[gml]
target=instance_nearest(x,y,persona_con_palo)
if distance_to_object(target) < 250
{
   if !instance_exists(flecha) {
   i=instance_create(x,y,flecha);
  }
   i.enemyX = target.x;
   i.enemyY = target.y;
}
[/gml]


Create de la flecha
[gml]
enemyX = x;
enemyY = y;

pathdir = path_add();

path_add_point(pathdir,x,y,room_speed);
path_add_point(pathdir,enemyX,enemyY,room_speed);

alarm[0] = room_speed*0.5;
[/gml]

Alarm[0]
[gml]
path_start(pathdir,room_speed,path_action_stop,0)
[/gml]

STEP de la flecha
[gml]
l = path_get_length(pathdir);
p = path_position;
d = l*p;

path_change_point(pathdir,1,enemyX,enemyY,room_speed);

l = path_get_length(pathdir);
path_position = d/l;
[/gml]

Lo probe en GM Studio asi que no estoy seguro si funcionara en GM8

No me anda me da errores de que no encuentra las variables


Cambia lo siguiente en el step de la torre
[gml]
target=instance_nearest(x,y,persona_con_palo)
if distance_to_object(target) < 250
{
   if !instance_exists(flecha) {
   i=instance_create(x,y,flecha);
  }
   alarm[0] = 10;
}
[/gml]

Y crea una alarm en la torre
[gml]
i.enemyX = target.x;
i.enemyY = target.y;

alarm[0] = 1;
[/gml]



Cita de: desplo en Noviembre 14, 2017, 02:48:14 AM

Cambia lo siguiente en el step de la torre
[gml]
target=instance_nearest(x,y,persona_con_palo)
if distance_to_object(target) < 250
{
   if !instance_exists(flecha) {
   i=instance_create(x,y,flecha);
  }
   alarm[0] = 10;
}
[/gml]

Y crea una alarm en la torre
[gml]
i.enemyX = target.x;
i.enemyY = target.y;

alarm[0] = 1;
[/gml]

No encuentra la variable 1