Hola buenas tengo un problema con un enemigo que hace un ataque hacía el player, el cual se mueve un poco y una vez hace la animación, se deje de mover y active un contador que lo hace moverse de nuevo.
El problema va que de vez en cuando el enemigo detecta que estoy a su derecha empieza hacer la animación de ataque y se mueve en esa direccion y no para . Acá dejo el codigo
Step
[gml] //Sí player esta cerca atacar
if (collision_line(x,y+49,x+50*image_xscale,y,objPlayer,false,false) != noone) and (!Activo[1]) and (!Activo[2])
{
Activo[1] = true;
}
//Ataque
if Activo[1] and (!Activo[2])
{
sprite_index = sprDevilM_Enemigo_Ataque;
image_speed = 0.25;
if instance_exists(objPlayer)
{
if (objPlayer.x>x) { xscale = 1; } else
if (objPlayer.x<x) { xcsale = -1;}
}
hspeed = abs(Hspeed*1.5)*xscale;
}
if (!Activo[1]) and Activo[2]
{
sprite_index = sprDevilM_Enemigo_Stand;
image_speed = 0.15;
timer++;
if timer == room_speed/1.5
{
hspeed = Hspeed*choose(1,-1);
xscale = sign(hspeed);
sprite_index = sprDevilM_Enemigo_Walk;
image_speed = abs((hspeed*6.8/100));
Activo[2] = false;
Activo[1] = false;
timer = 0;
}
}
image_xscale = xscale; [/gml]
Animation end
[gml] if sprite_index == sprDevilM_Enemigo_Ataque
{
image_speed = 0;
hspeed = 0;
Activo[1] = false;
Activo[2] = true;
} [/gml]
Gracias de antemano
Activo1 queda en true y el timer queda en 0 todo el tiempo una vez hay colision.
Yo te diria que te replantees el codigo y vuelvas a hacerlo.
Una duda, porque usas arrays (Activo1 Activo2) ?
mmmm...Gracias :)
Y lo de los arrays es simplemente que leí, o me acuerdo haber leído,que ocupan menos espacio, pero nunca he notado ese ahorro de espacio siendo sincero.