Octubre 18, 2011, 10:36:06 PM Ultima modificación: Octubre 20, 2011, 10:31:27 PM por pucara
Hola amigos,
Un placer volver a la comunidad despu?s de un tiempito de inactivdad.
Para reciclarme, estoy intentando concluir un sencillo juego, y he aqu? la duda que me gustar?a me ayuden a resolver-

creo 5 objetos obj_bala las cuales tienen que dirigirse a un objetivo, cualquiera de los que se le acercan. dentro del c?digo de obj_baja lo hago as?:
step

if(instance_exists(obj_enemy)){
   move_towards_point(target.x,target.y,1.5)}
else{
   instance_destroy()}



donde la variable local "target" le asigno el id del enemigo a crear:
target=instance_nearest(x,y,obj_enemy);

todo va bien, incluso disparan al enemigo m?s cercano, hasta que sale este error:
ERROR in
action number 1
of  Step Event
for object obj_bala:

Error in code at line 2:
      move_towards_point(target.x,target.y,1.5)}

at position 32: Unknown variable x


Gracias de antemano por su ayuda.  8)

Revistaste que la variable target guarde bien su valor, no?

Deduzco que has declarado e iniciado la variable "target" en el evento create...
Por lo cu?l cuando el enemigo mas cercano es destruido sale el error. Esto sucede porque sigue habiendo una instancia de "obj_enemy" pero no se encuentra la instancia "target", porque ya se ha eliminado, es por eso que llega hasta la condicion if y luego surge el error.
M?s gr?ficamente:
[gml]
if(instance_exists(obj_enemy)) //se evalua como verdadera la condicion, puesto que todav?a hay una instancia de "obj_enemy"
move_towards_point(target.x,target.y,1.5); //surge error porque la instancia "target" ha sido eliminada
else
instance_destroy();
[/gml]
Haciendo esa deducci?n, calculo que si testeas el juego con una sola instancia no deber?a surgir ning?n error...

Ahora, si quieres que el obj_bala se diriga unicamente al enemigo m?s cercano cuando es creada, deber?as colocar en el evento create:
[gml]
target = instance_nearest(x,y,enemigo);

if (instance_exists(enemigo))
move_towards_point(target.x,target.y,1.5);
[/gml]

El error esta en que target no se refiere a las instancias obj_enemy si no a una en especifico osea a la ID de una instancia en especifico, por lo  q cuando esa instancia con la mencionada ID no esta, hay error, modifica el codigo asi.

if(instance_exists(target)){
   move_towards_point(target.x,target.y,1.5)}
else{
   instance_destroy()}

Gracias a todos por contestar, se solucion? el problema corrigiendo el c?digo seg?n indic? evilskelly.

Saludos amigos  8)