PDA

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&#225;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&#237;a de gran ayuda.

1 saludo

joanvr
23/11/2007, 06:23
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.

chipan
23/11/2007, 07:23
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&#191;? el m&#225;ximo valor es 512 si no recuerdo mal... bueno, tu prueba, con la z ir&#225; perfecto.

Se asigna como la x o la y, o sea z=valor :brindis:

chipan
23/11/2007, 11:28
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&#250;n con el tema del mouse y lo comento as&#237; como si n&#225; :D...

&#191;No se podr&#237;a asignar a MOUSE.GRAPH un gr&#225;fico talmente transparente?

BUHOnero
23/11/2007, 12:12
No he currado a&#250;n con el tema del mouse y lo comento as&#237; como si n&#225; :D...

&#191;No se podr&#237;a asignar a MOUSE.GRAPH un gr&#225;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

chipan
23/11/2007, 14:10
Entonces con una Z de -512 el sprite se vería siempre y con una Z de 512 lo taparía cualquier otro.

joanvr
23/11/2007, 16:49
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&#191;? (;))

chipan
23/11/2007, 17:03
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&#225;fico que uses.

joanvr
24/11/2007, 19:05
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...

Drumpi
26/11/2007, 16:53
Hacedle caso a Thanatos, que sabe lo que dice :P El "type(mouse)" (que solo funciona para colisiones) s&#243;lo detecta colisi&#243;n con el "punto caliente" (punto de control 0, centro del gr&#225;fico) del gr&#225;fico asignado al rat&#243;n. Las coordenadas se usan si el otro gr&#225;fico es cuadrado.
Otra cosa, un truquito para los que no les guste esconder las cosas detras de los dem&#225;s y quieren hacer collision: usad alpha=0.

Yo creo recordar que a m&#225;s z, m&#225;s por encima de los dem&#225;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&#225;n casi siempre por encima de los dem&#225;s) y fondos de scroll (idem por debajo)

zikitrake
27/11/2007, 07:34
bicho1.z = -100;
bicho2.z = 100;

bicho1 se ver&#225; pisando a bicho2

Por cierto, lo del alpha=0 creo que es una muy buena opci&#243;n.