Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: nonoroman en Mayo 04, 2018, 11:04:35 PM

Título: CAMBIO DE SPRITE DE FORMA PROGRESIVA Y SIMULTANEA
Publicado por: nonoroman en Mayo 04, 2018, 11:04:35 PM
Buenas, otra vez ando por aqui.

Os traigo la siguiente cuestion. Se puede crear un efecto en el proceso de cambiar el sprite, de manera que sea un cambio suave y progresivo. Que diera un pequeño efecto de transformacion???

No se si jugando con el alpha, o no se como.

Espero haberme explicado bien, y si alguien sabe algo que comente please.

Os doy las gracias por adelantado. Saludos!!!  ;)
Título: Re:CAMBIO DE SPRITE DE FORMA PROGRESIVA Y SIMULTANEA
Publicado por: getnoff en Mayo 06, 2018, 01:06:39 AM
Te dejo este código que hace que el primer sprite vaya desapareciendo de a poco y a su vez el segundo vaya apareciendo de a poco, usando el alpha, como el valor de alpha va de 0 a 1.

Supongamos que el personaje se llama "obj_player" que está usando el "sprite1" y va a cambiar al "sprite2"

evento step
[gml]
if sprite_index == sprite1
{
    image_alpha -= 0.01; //cada step del juego será más transparente hasta desaparecer
     
    if image_alpha == 0 //cuando ya no se ve, se le asigna el otro sprite
    {
        sprite_index = sprite2;
        image_alpha = 1;
    }
}
[/gml]

Y esto en el evento draw pero en otro objeto que no use sprites, como por ejemplo un obj_controlador

evento draw
[gml]
with (obj_player) //como si estuviésemos dentro del obj_player
{
    if image_alpha > 0 and sprite_index == sprite1
    {
        draw_sprite_ext(sprite2,0,x,y,1,1,0,c_white,1-image_alpha); //se irá dibujando de a poco el segundo sprite
    }

}
[/gml]

¿por qué en otro objeto? porque al usar un evento draw en un objeto que tiene sprites asignados hacen conflicto entre ellos.
Título: Re:CAMBIO DE SPRITE DE FORMA PROGRESIVA Y SIMULTANEA
Publicado por: nonoroman en Mayo 06, 2018, 02:29:39 AM
Muchas gracias getnoff. Justo algo asi es lo que me estaba planteando.

Voy a probar a ver que tal queda. Porque no tengo claro que quiero hacer. Pero quiero darle algun efecto de transformacion o transacion. A ver que consigo.

Bueno ya te cuento y gracias.  ;D

Cita de: getnoff en Mayo 06, 2018, 01:06:39 AM
Te dejo este código que hace que el primer sprite vaya desapareciendo de a poco y a su vez el segundo vaya apareciendo de a poco, usando el alpha, como el valor de alpha va de 0 a 1.

Supongamos que el personaje se llama "obj_player" que está usando el "sprite1" y va a cambiar al "sprite2"

evento step
[gml]
if sprite_index == sprite1
{
    image_alpha -= 0.01; //cada step del juego será más transparente hasta desaparecer
     
    if image_alpha == 0 //cuando ya no se ve, se le asigna el otro sprite
    {
        sprite_index = sprite2;
        image_alpha = 1;
    }
}
[/gml]

Y esto en el evento draw pero en otro objeto que no use sprites, como por ejemplo un obj_controlador

evento draw
[gml]
with (obj_player) //como si estuviésemos dentro del obj_player
{
    if image_alpha > 0 and sprite_index == sprite1
    {
        draw_sprite_ext(sprite2,0,x,y,1,1,0,c_white,1-image_alpha); //se irá dibujando de a poco el segundo sprite
    }

}
[/gml]

¿por qué en otro objeto? porque al usar un evento draw en un objeto que tiene sprites asignados hacen conflicto entre ellos.