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)