Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: MetalGore en Junio 29, 2017, 06:09:25 PM

Título: Como hacer que el sprite parpadee (Solucionado)
Publicado por: MetalGore en Junio 29, 2017, 06:09:25 PM
Hola a todos, necesito vuestra ayuda otra vez. Estoy intentando hacer un juego de plataformas y soy muy torpe con esto, voy progresando poco a poco. Ahora lo que estoy intentando hacer es que el sprite del jugador parpadee cuando recibe un golpe. He conseguido que al ser golpeado esté un tiempo invulnerable (lo conseguí gracias a vuestra ayuda  ;D), pero llevo un tiempo intentando que el sprite parpadee durante el tiempo que es invulnerable y también había pensado que rebotara un poco al colisionar contra el enemigo, hasta ahora no lo he conseguido :'( . Necesito ayuda, no se como hacerlo.
Este es el codigo que tengo (en el Step del Jugador) cuando choca con un objeto como pinchos,...
//Colisión contra un Objeto dañino
if (place_meeting(x + 1, y, obj_Damage)) && (!invulnerable)
{
    global.Corazon -= 1;
    audio_play_sound(snd_JugadorMuere, 90, false);
    invulnerable = true;
    alarm[0] = 50;//tiempo que dura la invulnerabilidad
}


Y este el que tengo en el Step del Enemigo cuando colisiona con el jugador:
//Colisión con el Jugador y Muerte
if (place_meeting(x, y, obj_Jugador))
{
    if (obj_Jugador.y < y - 32)
    {
        with (obj_Jugador) vsp = -jumpspeed;
        instance_destroy();
        audio_play_sound(snd_EnemigoMuere, 90, false);
    }
    else
    {   
        if(!obj_Jugador.invulnerable)
        {
            audio_play_sound(snd_JugadorMuere, 90, false);
            global.Corazon -= 1;
            obj_Jugador.invulnerable = true;
            obj_Jugador.alarm[0] = 50; //tiempo que dura la invulnerabilidad
        }
                 
    }
}


Un saludo y gracias por adelantado :D
Título: Re:Como hacer que el sprite parpadee
Publicado por: brunoxzx en Junio 29, 2017, 06:47:57 PM
Pon esto en step de tu jugador.

[gml]
if (invulnerable && ( ( alarm[0] mod 3 )==0 )  )  ){
    image_alpha=0;
}else image_alpha=1;[/gml]

Puedes cambiar el 3 por un numero menor para hacerlo más constante o uno mayor para hacerlo menos.
Título: Re:Como hacer que el sprite parpadee
Publicado por: MetalGore en Junio 29, 2017, 07:05:27 PM
Muchas Gracias brunoxzx!!! Funciona de maravilla. Si no te importa me podrías explicar para que sirve el "mod", lo demás lo entiendo mas o menos. Es que me gusta entender para que funciona cada cosa y así aprender. Gracias de nuevo  XD.

Y si alguien se anima y me dice como hacer que el jugador rebote un poco al se dañado se lo agradecería. Un saludo.
Título: Re:Como hacer que el sprite parpadee
Publicado por: brunoxzx en Junio 29, 2017, 07:49:43 PM
Mod devuelve el residuo de una division, en ese caso el timer de la alarma dividido entre 3:

Sería más o menos así conforme la alarma se va haciendo más pequeña:
((50/3)=16; residuo 2),
((49/3)=16; residuo 1),
((48/3)=15; residuo 0) AQUï image_alpha se hace 0;

((47/3)=15; residuo 2),
((46/3)=15; residuo 1),
((45/3)=15; residuo 0) AQUï image_alpha se hace 0;

((44/3)=15; residuo 2),
((43/3)=15; residuo 1),
((42/3)=15; residuo 0) AQUï image_alpha se hace 0;.....

y bueno ya sabras como sigue. EL operando modulo suele usarse para hacer conteos ciclicos, por ejemplo si quieres que se cuente del cero al 9 y se repita, haces esto: "numero=(numero+1) mod 10".

Lo de que rebote ya depende de tí jeje.. o de alguien más por acá...
Título: Re:Como hacer que el sprite parpadee
Publicado por: MetalGore en Junio 30, 2017, 05:00:34 PM
Muchas gracias de nuevo :D. Ya me ha quedado algo más claro. Un saludo.