Ver la versión completa : Como se mezclan sprites con SDL?
Neodreamer
23/12/2007, 12:17
Hola, estoy siguiendo unos tutos de SDL y lo unico q no consigo saber como se haria es q un grafico sea semi-transparente al tocar con otro, como x ejemplo en una vista isometrica, al pasar x delante de un edificio, no pasa nada(durezas y listo) pero si la casa esta delante, q se vea la casa y el personaje al 50%(creo q en el comandos pasaba algo asi).
Como se haria?
Gracias y 1saludo
La parte facil seria hacerlo con el modo 16bits y usar el sdl_setalpha(), asi asignarias un valor alpha al sprite y si pasa por detras de la casa tan solo has de modificarlo
if (el tio esta por delante)
edificio.valoralpha = 255;
else
edificio.valoralpha = 0;
Con 8bits y sin alpha no tengo la mas remota idea de como se podria hacer una transparencia
Sin transparencias siempre puedes dibujar "pixel si pixel no" del personaje en las partes en las que esté tapado.
La parte facil seria hacerlo con el modo 16bits y usar el sdl_setalpha(), asi asignarias un valor alpha al sprite y si pasa por detras de la casa tan solo has de modificarlo
if (el tio esta por delante)
edificio.valoralpha = 255;
else
edificio.valoralpha = 0;
Con 8bits y sin alpha no tengo la mas remota idea de como se podria hacer una transparencia
en 8bits pues igual, definiendo cual es el color trasparente, la funcion no me acuerdo pero creo que era algo como SDL+ColorKey o algo asi.
Aiken
< - >
casa esta delante, q se vea la casa y el personaje al 50%(creo q en el comandos pasaba algo asi).
Como se haria?
Gracias y 1saludo
y claro, definiendo que la parte "dura" del sprite no es la imagen entera, sino solo ese 50% que no pasa, pues el otro trozo si que tiene que "pasar" ;)
Aiken
Neodreamer
23/12/2007, 20:43
Gracias a todos, pero Aiken, cuando decia lo del 50% no me referia de cantidad del cuerpo sino de la transparencia... no es q se vea la parte alta del torso o las piernas, sino q se vea ambos sprites, cuerpo y casa x ejemplo.
Gracias y 1saludo
Pues eso te estan diciendo, pero creo que con un error; lo que tienes que hacer semitransparente es la casa.
si la casa esta hecha de pixels tal que así:
0000001000000 0000001000000
0000011100000 0000011100000
0000111110000 0000111110000
0001111111000 0001111111000
0011111111100 0011111111100
0111111111110 0111111111110
1111111111111 1111111111111
0111111111110 0111111111110
0111111111110 0111111111110
0111111111110 0111111111110
0111111111110 0111111111110
Representando los ceros "0" al color transparente y los unos "1" al resto de los pixels visbles;
tendrías que hacer que la casa se pintase de la siguiente manera:
0000001000000 0000001000000
0000010100000 0000010100000
0000101010000 0000101010000
0001010101000 0001010101000
0010101010100 0010101010100
0101010101010 0101010101010
1010101010101 1010101010101
0101010101010 0101010101010
0010101010100 0010101010100
0101010101010 0101010101010
0010101010100 0010101010100
No se si me he explicado bien
Gracias a todos, pero Aiken, cuando decia lo del 50% no me referia de cantidad del cuerpo sino de la transparencia...
cierto, te habia entendido mal. Pues semitrasparencia en 16bits con el alpha.
Y en 8bits yo hice lo que te comentan ... tenia dos juegos de sprites para las paredes, unos eran opacos y otros eran pixel si, pixel no. Y cuando el muñeco pasaba por detras de la pared mostraba el sprite de la pared que era pixel si, pixel no.
Puede parecer cutre, pero luego dentro del juego queda bastante resulton ;)
En 16bits pues ya sabes a jugar con el alpha.
Aiken
Neodreamer
23/12/2007, 21:54
Ok, tomare nota de la respuesta de ambos....
Muchisimas gracias
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.