Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: woolf7 en Junio 06, 2015, 08:30:43 AM

Título: cual podría ser el error en este código[Ayuda]
Publicado por: woolf7 en Junio 06, 2015, 08:30:43 AM
Bueno iré al  punto:
Un objeto clavo cae del techo cada ves que el personaje pasa por debajo de este, y se detiene en el objeto solido con el que colisiono, vibra unas cuantas veces se hace invisible y en 5 segundos se restaura en su posición de origen, cuando colisiona con objetos sólidos inertes no hay problemas con esto, pero con las plataformas(que también son solidas) que se mueven horizontalmente se producen dos errores..

El primero: si el personaje colisiona con el clavo en la plataforma, el clavo deja de vibrar hasta que el personaje se quite, en pocas palabras pausa la alarma que hace que vibre el clavo ???
El segundo: cuando el clavo se hace invisible (cuando su alpha es "0"), en 5 segundos se restaurara a su lugar de origen, pero si el personaje colisiona con el clavo mientras este es invisible, este se hace visible de nuevo ???

Ojo esto solo pasa en el objeto solido plataforma, con los sólidos inertes no hay problemas...

códigos del clavo:
End step
if (vspeed != 0){    //si el clavo esta callendo
   var bloque;
   bloque = collision_rectangle(x-4,y+16,x+4,y+16+vspeed,obj_ParentSolid,0,0);    //guarda la instancia solida con la que colisiono
   
   if (bloque && vspeed > 0){
      y = bloque.y-20;   //posiciona al clavo encima del solido
      vspeed = 0;
      gravity = 0;
      image_alpha = 0.5;
      alarm[0]=room_speed*1/3;
   }
}

alarma 0
if (comp != 100){   //comp en CREATE tien el valor de "0"
if (image_alpha == 0.2){
   image_alpha = 0.5;
   comp += 1;
   }
else if (image_alpha == 0.5){
   image_alpha = 0.2;
   comp += 1;
   }
if (comp <= 15)             //se repite mientras comp no alcance el valor de 16
   alarm[0]=room_speed*1/3;
else {                        //de lo contrario la variable de control toma el valor de 100
   image_alpha = 0;
   comp = 100;
   alarm[0]=room_speed*5;
}
}
else if (comp == 100){  //se restaura en pocas palabras el clavo
   x = xstart;
   y = ystart;
   image_alpha = 1;
   comp = 0;
}

step
var play, play2;
play = collision_rectangle(x-3,y+16,x+3,scr_Dictance(),obj_Perro,0,0);  //detecta colision con obj_perro entre la posición de origen y el primer solido hacia abajo
play2 = collision_rectangle(x-3,y+16,x+3,scr_Dictance(),obj_gato,0,0);    //lo mismo con el gato


if ((play || play2) && vspeed == 0){                    //establece cuando caerá la trampa (cuando pase nuestro personaje)
   vspeed = 1;
   gravity = 0.5;
   gravity_direction = 270;
}
////////////////////////////////////////////////////////////////////
if (collision_rectangle(x-5,y+16,x+5,y+20,obj_plataforma,0,0)){            //si la trampa colisiona con una plataforma
   var plata = collision_rectangle(x-5,y+16,x+5,y+20,obj_plataforma,0,0);
   if (plata){
   if (plata.dir == "Hor")   //el clavo se mueve junto con la plataforma                                                     
      x += 2;
   else if (plata.dir == "-Hor")   //igual aqui
      x -= 2;
      }
}

Tiene que ser un error de la alarma[0], pero no me lo explico, solo me pasa con las plataformas, y pues en estas solo tengo código de movimiento, y el personaje no tiene ningún código referente al clavo..
Cual podría ser el causante de este problema?
Título: Re:cual podría ser el error en este código[Ayuda]
Publicado por: arcangelcaos en Junio 06, 2015, 09:58:07 AM
No se si será esto, pero veo aquí esto

ORIGINAL
if (comp <= 15)             //se repite mientras comp no alcance el valor de 16
   alarm[0]=room_speed*1/3;


MODIFICADO
if (comp <= 15)             //se repite mientras comp no alcance el valor de 16
   {alarm[0]=room_speed*1/3;}
Título: Re:cual podría ser el error en este código[Ayuda]
Publicado por: woolf7 en Junio 06, 2015, 11:03:20 AM
Pero si es una sola instrucción, no son necesarios los llaves.