Buenas comunidad, mi problema es el siguiente, acabo de crear un enemigo al cual al acercarce el jugador dispara una flecha, el problema es que el enemigo comienza con la animación de parado, osea, esta con la image_speed a 0, coloque una variable para que al estar a cierto rango el enemigo dispare y se pueda apreciar la animación de cuando lanza la flecha, dejo el codigo de ejemplo...
EVENTO CREATE:
[gml]image_speed = 0;
image_index = 0;
ataca = true; [/gml]
EVENTO STEP
[gml]if instance_exists(obj_Seiya)
{
if (distance_to_object(obj_Seiya) < 100) && (ataca = true)
{
image_speed = 1.2;
if (image_index = 3)
{
flecha = instance_create_depth(x,y,-1,obj_Enemigo_Flecha_Izq);
image_index = 0;
image_speed = 0;
ataca = false;
}
alarm[0] = 150;
}
}[/gml]
ALARMA
[gml]ataca = true;[/gml]
El problema es el siguiente, el jugador al acercarce al enemigo, el enemigo dispara la flecha correctamente, pero si me muevo un poco acercandome al rango <100 y me alejo rapidamente, el enemigo queda repitiendo la animación una y otra vez y no dispara la flecha nunca tampoco....
Cambia el código de manera que el enemigo regrese a su estado actual si el jugador no esta en rango, o que cuando empiece a lanzar una flecha tenga que lanzar la flecha si o si.
Para la primera opción simplemente agrega un else al if de distance_to_object que regrese image_speed y index a 0.
[gml]if instance_exists(obj_Seiya)
{
if (distance_to_object(obj_Seiya) < 100) && (ataca = true)
{
image_speed = 1.2;
if (image_index = 3)
{
flecha = instance_create_depth(x,y,-1,obj_Enemigo_Flecha_Izq);
image_index = 0;
image_speed = 0;
ataca = false;
}
alarm[0] = 150;
}
else{
image_index = 0;
image_speed = 0;
}
}[/gml]
Para la segunda solo agrega una comprobación de la velocidad del sprite al if de distance_to_object:
[gml]if instance_exists(obj_Seiya)
{
if ((distance_to_object(obj_Seiya) < 100) || (image_speed != 0)) && (ataca = true)
{
image_speed = 1.2;
if (image_index = 3)
{
flecha = instance_create_depth(x,y,-1,obj_Enemigo_Flecha_Izq);
image_index = 0;
image_speed = 0;
ataca = false;
}
alarm[0] = 150;
}
}[/gml]