Ver la versión completa : [AYUDA] Superposición de sprites
loixartx
23/11/2007, 02:39
Hola a todos.
Estoy liado con un pequeño juego de puzzles y se me ha presentado un problema. Para simplificar diré que tengo dos procesos que cada uno pinta una imagen en pantalla y están constantemente llamando a "frame" para que sean dibujados. El problema es que yo quiero poder elegir cuál de ellos va a ir detrás y cuál de ellos va a quedar por encima... pero no se me ocurre como hacerlo sin pensar en exclusión mutua, semáforos y demás parafernalias que supongo no incluirá fenix y ni yo tengo ganas de recordar [wei6]
1 saludo!
< - >
bah.... lo he solucionado de una forma que no me gusta mucho pero bueno... he tenido que hacer esperar unas decimas de segundo para que se pinten primero todos los sprites que van detrás y luego lanzar los procesos que pintan los sprites que van "encima"...
De todas formas si alguien sabe una forma mejor de controlar esto me sería de gran ayuda.
1 saludo
si es fenix, que por lo que dices creo que si, modifica la variable z de los procesos: es la de profundidad. No me acuerdo si a mayor z más lejos o al reves, pruevalo.
Efectivamente, con la variable local del sistema z (local=cada proceso tiene la suya; del sistema=ya viene declarada implicitamente) modificas la prioridad de dibujado; con lo cual, un proceso con una variable Z mayor estará mas "al fondo" y con una Z menor estará mas al frente.
Como variable que es, su valor puede cambiar sin ningun problema en tiempo de ejecución.
Para mas info, usa la ayuda del flamebird.
BUHOnero
23/11/2007, 10:04
Efectivamente, con la variable local del sistema z (local=cada proceso tiene la suya; del sistema=ya viene declarada implicitamente) modificas la prioridad de dibujado; con lo cual, un proceso con una variable Z mayor estará mas "al fondo" y con una Z menor estará mas al frente.
Como variable que es, su valor puede cambiar sin ningun problema en tiempo de ejecución.
Para mas info, usa la ayuda del flamebird.
mmmm me parece que es a la inversa... z mayor por encima no¿? el máximo valor es 512 si no recuerdo mal... bueno, tu prueba, con la z irá perfecto.
Se asigna como la x o la y, o sea z=valor :brindis:
Estoy casi seguro de que a menor valor mas cerca está el sprite; me he tenido que pelear bastante con eso para hacer que el puntero del mouse no sea visible en los juegos para la tactil de la F200.
BUHOnero
23/11/2007, 11:38
Estoy casi seguro de que a menor valor mas cerca está el sprite; me he tenido que pelear bastante con eso para hacer que el puntero del mouse no sea visible en los juegos para la tactil de la F200.
en eso me estaba basando yo, en las pruebas que estoy haciendo con el puntero, para no hacerlo visible meterlo debajo de todo, hasta del fondo :quepalmo:
zikitrake
23/11/2007, 11:54
No he currado aún con el tema del mouse y lo comento así como si ná :D...
¿No se podría asignar a MOUSE.GRAPH un gráfico talmente transparente?
BUHOnero
23/11/2007, 12:12
No he currado aún con el tema del mouse y lo comento así como si ná :D...
¿No se podría asignar a MOUSE.GRAPH un gráfico talmente transparente?
entonces no detecta colisiones... hay que poner un grafico con algun color, y aunque sea de 1x1 pixel se ve dependiendo del color del fondo
zikitrake
23/11/2007, 12:26
entonces no detecta colisiones... hay que poner un grafico con algun color, y aunque sea de 1x1 pixel se ve dependiendo del color del fondo[wei]ya me extrañaba a mí que fuera tan fácil :D
Entonces con una Z de -512 el sprite se vería siempre y con una Z de 512 lo taparía cualquier otro.
No es un poco ineficiente tener que usar las colisiones por pixels para mirar colision dentre mouse y otros sprites?
BUHOnero
23/11/2007, 16:54
No es un poco ineficiente tener que usar las colisiones por pixels para mirar colision dentre mouse y otros sprites?
mientras funcione... para mi va perfecto, tienes algun problema¿? (;))
No es un poco ineficiente tener que usar las colisiones por pixels para mirar colision dentre mouse y otros sprites?
no será muy eficaz, pero si el grafico del mouse es un solo pixel ya no hay ese problema.
thanatos
24/11/2007, 00:35
Con mouse las colisiones no se calculan 'al pixel' sino con el punto de control 0 del gráfico que uses.
Me refiero a porque no usar las coordenadas X, Y del mouse para la logica? Es que todas esas cosas de collision(type mouse)... (o algo así, no me acuerdo ya mucho de fenix) le hacen una buena sablada de rendimiento...
Hacedle caso a Thanatos, que sabe lo que dice :P El "type(mouse)" (que solo funciona para colisiones) sólo detecta colisión con el "punto caliente" (punto de control 0, centro del gráfico) del gráfico asignado al ratón. Las coordenadas se usan si el otro gráfico es cuadrado.
Otra cosa, un truquito para los que no les guste esconder las cosas detras de los demás y quieren hacer collision: usad alpha=0.
Yo creo recordar que a más z, más por encima de los demás se va a ver (tampoco me hagais mucho caso porque siempre lo confundo). Y otra cosa, si no recuerdo mal, z es un int, creo que se pueden poner valores mayores a 512 y menores que -512, esos solo son valores por defecto para textos (que se verán casi siempre por encima de los demás) y fondos de scroll (idem por debajo)
zikitrake
27/11/2007, 07:34
bicho1.z = -100;
bicho2.z = 100;
bicho1 se verá pisando a bicho2
Por cierto, lo del alpha=0 creo que es una muy buena opción.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.