Efecto de profundidad dinámico

Started by Yawin, February 20, 2015, 11:28:04 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

¡Hola a todos!

Os traigo un problema que me trae un tanto de cabeza. He comenzado a planificar un motor para mi próximo juego y, por decisiones de la vida, quiero que tenga profundidad. Como por ejemplo en "Broken Sword", donde si echas al personaje al fondo este cambia su escala para dar ese efecto y varía su velocidad para dar una sensación realista de su movimiento.

La primera vez que lo he diseñado, el punto de fuga en el que me basaba era uno fijo, prediseñado en el código; pero he pensado: si este punto de fuga variara según el mapa, podría hacer los niveles mucho más ricos. Así que este es el problemilla que tengo.

Sé cómo definir el punto de fuga, lo que no se es cómo calcular en tiempo real qué escala tengo que tener para integrarme con este punto y qué z tener para decidir qué capas van por encima y qué capas por debajo.

¿Se os ocurre alguna idea?


Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

La momia que fuma

Así a bote pronto, no se si será práctico o una chapuza, pero....que tal una especie de mapa de durezas, pero para la escala?

O sea, un plano 3D "sombreado" como el que adjunto aquí, en el que compruebas la oscuridad o claridad del color en las coordenadas del personaje y lo escalas en base a eso.


Con este método puedes hacer cada mapa como quieras en cuanto a perspectiva.

Yawin

He estado trabajando este fin de semana y, creo que ya tengo algo. En vez de definir cuatro puntos, al cargar la pantalla cargo un valor, que corresponde con el valor mínimo del size en esa pantalla. Y luego aplico esta ecuación: size=((100-sizemin)*(y-sizemin)/(window_height-sizemin))+sizemin

Lo que hace es establecer la y máxima que puede tomar estando dentro de la pantalla como size=100, la y mínima con size=size min. Y en base a ello saco el valor de size para la y en la que está.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end