Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Enemigo se bugea al hacer ataque [Solucionado]  (Leído 256 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TheWood

en: Septiembre 15, 2017, 01:15:50 am
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
 //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;

Animation end

 if sprite_index == sprDevilM_Enemigo_Ataque 
 {
  image_speed = 0;
  hspeed = 0;
  Activo[1] = false;
  Activo[2] = true;
 }

Gracias de antemano
« última modificación: Septiembre 16, 2017, 02:47:05 am por TheWood »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 en: Septiembre 15, 2017, 03:29:16 am
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) ?

 


Desconectado TheWood

Respuesta #2 en: Septiembre 15, 2017, 08:19:11 pm
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.