Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Monigote en Agosto 30, 2010, 12:57:23 PM

Título: Hacer un objeto semi transparente para una view y para otra no
Publicado por: Monigote en Agosto 30, 2010, 12:57:23 PM
Hola. Estoy haciendo un juego de plataformas en el que dos jugadores pueden jugar simult?neamente, cada uno en una view. Tengo un objeto que para uno es como si no hubiera nada y para el otro es un bloque s?lido, pero no s? c?mo hacer que para la view del primer personaje (para el que el bloque es como si no hubiera nada) el bloque se vea semitransparente y para la view del otro no.

?Alguien sabe c?mo hacer esto?

Gracias de antemano :)
Título: Re: Hacer un objeto semi transparente para una view y para otra no
Publicado por: Texic en Agosto 30, 2010, 05:07:58 PM
Ten?s que dibujar el bloque en el evento draw con la siguiente condicional

if view_current=0 //Eso si quieres que se vea en la view 0
{
draw_set_alpha(a)
draw_sprite(bloque,x,y)
}
if view_current=1 //Eso si quieres que se vea en la view 1
{
draw_set_alpha(a)
draw_sprite(bloque,x,y)
}
draw_set_alpha(1)

As? le pon?s el alpha que quieras para cada view
Suerte =)
Título: Re: Hacer un objeto semi transparente para una view y para otra no
Publicado por: flayd4 en Agosto 30, 2010, 05:11:38 PM
Usa esto en:

- El Objeto que se dibuja semitransparente para uno y solido para otro.
- Evento Draw.

Citar
//Esta es la view en la cual el objeto se dibuja semitransparente
//0 es el numero de la view
//yo le puse 0, pero tu cambiala a la que tu usas

if view_current = 0
{
    draw_sprite_ext(sprite_index,image_index,x,y,1,1,0,c_white,0.5);
}
    else
//Para todas las demas views el objeto se dibujara solido
{
    draw_sprite_ext(sprite_index,image_index,x,y,1,1,0,c_white,1);
}

Debes tomar en cuenta que:
- Para hacer lo que necesitas forzosamente debes usar view_current
- view_current ?nicamente funciona en el evento draw
- cuando un objeto tiene un evento draw, ya no dibuja su propio sprite
- para solucionar esto yo use draw_sprite_ext que simula el dibujado de sprite normal

Anexe un archivo de muestra.

Corre el juego y mueve la esfera blanca con las flechas, la esfera negra se mueve con W,A,S,D.

Veraz como en la vista de la esfera blanca el block azul se dibuja solido y en la vista de la esfera negra se dibuja con una transparencia = 0.5

Edit: ups, publicaron una respuesta mientras escribia esta, el codigo es bastante similar asi que cualquiera de las dos respuestas te servir?.

Saludos