Septiembre 15, 2017, 01:15:50 AM Ultima modificación: Septiembre 16, 2017, 02:47:05 AM por TheWood
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.