Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on August 26, 2012, 07:37:40 PM

Title: Superposición de cosas
Post by: Yawin on August 26, 2012, 07:37:40 PM
¡Hola a todos!
Tengo un pequeño problema que no se me ocurre cómo solucionar. Estoy intentando desarrollar un "motor" para una aventura gráfica (sí, ese proyecto no lo tengo olvidado) y a la hora de mover al personaje por la pantalla me pasa un problema, que los objetos o se superponen al personaje o se quedan atrás. Digamos que no funcionan como objetos normales xDD


Se me han ocurrido cientos de formas para hacerlo, pero ninguna ha funcionado.


Esta es una demostración de lo que me pasa:
http://www.youtube.com/watch?v=h-_nOMZftFo (http://www.youtube.com/watch?v=h-_nOMZftFo)
Title: Re:Superposición de cosas
Post by: FreeYourMind on August 26, 2012, 07:54:43 PM
hhaahhah me parto xD perdona pero me he reido mogollon :)

Es normal, tu grafico de la mesa tiene una z menor, no me digas que ahora bennu tiene que adivinar cuando tu muñeco tiene que estar delante o detras de la mesa xDD

Eso lo tienes que programar tu, en primer lugar el muñeco no debe pasar la mesa hacia nosotros cuando pulsas abajo, yo pondria como un mapa de colisiones para las patas de la mesa, y otro que estuviera en los pies del muñeco, con esto tanto si estas detras y le das abajo el muñeco quedaria detras de la mesa, y si vienes desde el fondo de pantalla hacia la mesa, este quedaria a nivel de las patas de la mesa, ya que sus pies habrian colisionao con ella. ya solo faltaria ajustar la Z, si tu muñeco tiene el valor de Y mas alto que la mesa le pondria una z menor y vice versa, con esto ya simularias la realidad, para esto ultimo tambien podrias utilizar puntos de control en partes del grafico del muñeco o la mesa.
Title: Re:Superposición de cosas
Post by: Yawin on August 26, 2012, 07:57:40 PM
Claro, a ver el tema de la Z ya lo se. La cosa es que depende de donde se ponga la mesa tiene que estar delante o detrás, y no se me ocurre una norma general para definirlo.
Title: Re:Superposición de cosas
Post by: FreeYourMind on August 26, 2012, 08:04:22 PM
mira el dibujo, a ver si con esto entiedes mejor. tienes un grafico hijo para la mesa que es el rojo (puede ser un recorte de la mesa, y la mesa ser 2 graficos, o ser un mapa de durezas), y tienes lo mismo para el muñeco. ahora solo tienes que comprobar que los graficos hijos colisionen, con esto ya esta, solo falta controlar las Z'z con esto, dependiendo de la posición de los pies del muñeco, si estan mas abajo o arriba que las patas de la mesa. y esto para todos los objetos que pongas xD

(http://forum.bennugd.org/index.php?action=dlattach;topic=3184.0;attach=2513)

Title: Re:Superposición de cosas
Post by: Yawin on August 26, 2012, 08:07:07 PM
Sí, creo que empiezo a entender. Mañana te comento si lo consigo xDD
¡Gracias!
Title: Re:Superposición de cosas
Post by: FreeYourMind on August 26, 2012, 08:10:42 PM
De nada, en tu caso yo usaria mapas de durezas, para la mesa seria en forma de V, o sino recortas el fondo de la mesa en una V de un pixel y te apañas igual, al comprobar la colision de los 2 pies del muñeco con esta V.
Title: Re:Superposición de cosas
Post by: KeoH on August 26, 2012, 09:00:52 PM
En mi minimotor isometrico hice lo que comenta Free .. de hacer que la Z del personaje (y cualquier objeto en pantalla) se calcule en funcion de su Y.

http://youtu.be/yqosozqBCgY (http://youtu.be/yqosozqBCgY)
Title: Re:Superposición de cosas
Post by: gecko on August 27, 2012, 03:22:49 AM
podes centrar todos los graficos a "los pies" o "al suelo" y hacer las comprobaciones tomando eso como referencia. creo que seria lo mas simple :P
Title: Re:Superposición de cosas
Post by: Yawin on August 27, 2012, 11:58:05 AM
Quote from: KeoH on August 26, 2012, 09:00:52 PM
En mi minimotor isometrico hice lo que comenta Free .. de hacer que la Z del personaje (y cualquier objeto en pantalla) se calcule en funcion de su Y.

http://youtu.be/yqosozqBCgY (http://youtu.be/yqosozqBCgY)


¿Por casualidad no habrás liberado código del que robar algoritmos encontrar inspiración, no? La verdad es que dejando a un lado las coñas, me vendría muy bien un motor estable al que echarle uno de esos vistazos que los hombres echamos a las buenas mujeres (you know what I mean xD).
Title: Re:Superposición de cosas
Post by: KeoH on August 27, 2012, 07:48:59 PM
Aqui tienes el codigo ... tambien incluye un par de chanchullos pa q se pueda jugar con mando si esta conectado y sino con teclado.

Las funciones importantes aqui creo q eran Pinta() y set_zeta()

Le faltaba a este codigo un poco de orden xD es un caos...
Title: Re:Superposición de cosas
Post by: Yawin on August 27, 2012, 07:59:37 PM
¡Muchas gracias!
Si te digo la verdad, no me he enterado de casi nada de tu código. Me temo que usamos metodologías demasiado distintas xDD Pero gracias a la lectura de tu código he tenido una idea genialosísima.

Edit:
Os explico lo que se me ha ocurrido porque hasta mañana no voy a poder probarlo.

En todas las imágenes hay un patrón de profundidad. Es decir, partiendo de un punto todas las cosas se ordenan en profundidad respecto a este. Cuanto más cerca estás de este punto, más profundo estás en el dibujo. A veces, este punto es la esquina de la imagen. Y a veces es una línea entera. Depende de la orientación de la imagen.

Por eso, se me ha ocurrido que cuando genere un objeto, le voy a pasar las coordenadas de ese punto (x0, y0) y las coordenadas del punto contrario (es decir, el punto que está delante del todo)(x1,y1). La Z máxima posible será la distancia entre esos dos puntos y la Z mínima 0. Así que la Z de un objeto será:
z=fget_dist(x0,y0,x1,y1)-fget_dist(x0,y0,x,y);

¿Os parece que puede funcionar? O ver si mañana le puedo meter mano.
Title: Re:Superposición de cosas
Post by: FreeYourMind on August 27, 2012, 10:12:03 PM
en primer lugar le tienes que poner la señal negativa, ya que cuanto z mas negativo mas cerca de nosotros esta. Eso funciona, lo que hace es que los ojetos mas grandes queden siempre por encima de los pequeños, lo que no es funcional, porque puedes poner objetos mas pequeños que tu personaje y que deban estar delante. Eso puede ser practico para un juego estilo Arabian fight donde diminuyes el muñeco com zoom out al afastarse de la pantalla.

http://www.youtube.com/watch?v=wxYQhfI_d3g (http://www.youtube.com/watch?v=wxYQhfI_d3g)