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!!!  ;)
PCNONOGames  www.pcnono.es

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.

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.
PCNONOGames  www.pcnono.es