Ir al Indice
Curso RPG
Salto entre Celdas
Definiciones:Ventana de juego: La ventana definida en las propiedades de la aplicación. Será lo que veamos en pantalla.
Mapa: La zona por la que se moverá nuestro PJ. En este caso, todo el mapa estará en un mismo frame.
Scroll de "salto de cámara" en función de la posición del PJ:
[Tienes que estar registrado y conectado para ver este vínculo]Scroll_celdas (mfa)Nota: Parece un galimatías, ya lo sé, pero es mas sencillo de lo que parece. La idea es tener dividido el mapa en "celdas" del tamaño de nuestra ventana de juego. Por lo tanto cuando se sale de una celda y se entra en otra ... hacemos saltar la cámara de una celda a otra.
En realidad no hay "scroll", el pj se mueve con el fondo fijo.
Se puede hacer lo mismo poniendo cada "celda" en frames distintos ... que abordaremos próximamente.
Explicación mas detallada:Este tipo de "scroll" es para aplicar a frames que sean multiplos de la ventana de la aplicación.
Solo tenemos que tener en cuenta dos cosas:
1. En qué celda se va a iniciar el frame.
2. El motor de salto de cámara en función de la posición del PJ.
1. Celda en la que se inicia el frame.El frame estará dividido en
M celdas horizontales y en
N celdas verticales.
La fórmula para calcular las coordenadas de la cámara en la que se inicia el frame es la siguiente:
Cx=(M x Rh) - Rh/2
Cy=(N x Rv) - Rv/2Siendo
Rh el tamaño horizontal de la ventana de la aplicación (celda).
Siendo
Rv el tamaño o resolución vertical de la celda.
Ejemplo:Tenemos la ventana de juego en 640x480
Tenemos el frame con un tamaño de 1280x960
Por lo tanto: M=1280/640=2 N=960/480=2
es decir (M,N)=(2,2) esto es, el frame tiene 2 celdas horizontales y 2 verticales.
Si queremos que el frame se inicie en la primera celda, esto es en la celda (M,N)=(1,1):
Cx=(1x640)-640/2=640-320=320 por lo tanto la coordenada x de la cámara será 320.
Cy=(1x480)-480/2=480-240=240 por lo tanto la coordenada y de la cámara será 240.
Si queremos que el frame se inicie en la celda que está abajo a la derecha, esto es (M,N)=(2,2)
Cx=(2x640)-640/2=1280-320=960 por lo tanto la coordenada x de la cámara será 960.
Cy=(2x480)-480/2=960-240=720 por lo tanto la coordenada y de la cámara será 720.
Los valores (Cx,Cy) serán las coordenadas de la cámara cuando se inicie el frame.
Que llevado al MMF, son los valores que se pondrán en el "start of frame".
2. El motor de salto de cámara en función de la posición del PJ.En este caso, el número de celdas no influye. Sólo nos importa su tamaño.
Las 4 fórmulas a aplicar son las siguientes:
Si Px >= CAMx + Rh/2 entonces CAMx=CAMx + Rh
Si Px <= CAMx - Rh/2 entonces CAMx=CAMx - Rh
Si Py >= CAMy + Rv/2 entonces CAMy=CAMy + Rv
Si Py <= CAMy - Rv/2 entonces CAMy=CAMy - Rvsiendo:
Px: Coordenada x del PJ.
Py: Coordenada y del PJ.
CAMx: Coordenada x de la cámara.
CAMy: Coordenada y de la cámara.
Rh: Resolución horizontal de la celda.
Rv: Resolucion vertical de la celda.
Ejemplo:Tenemos una celda de 640x480.
Si Px >= CAMx + 320 entonces CAMx=CAMx + 640
Si Px <= CAMx - 320 entonces CAMx=CAMx - 640
Si Py >= CAMy + 240 entonces CAMy=CAMy + 480
Si Py <= CAMy - 240 entonces CAMy=CAMy - 480
Que llevado al MMF es el caso del ejemplo posteado mas arriba.
Nota: (Nobleza obliga)
Este tipo de scroll es bien conocido en el mundo de los videojuegos y en el foro el primero en publicarlo fué
Darkylight en el siguiente link:
[Tienes que estar registrado y conectado para ver este vínculo]