4.- ¿Programando el parallax?
Primero les voy a mostrar como programar un parallax con Xscale, después con Width, aunque en realidad ambos son casi iguales.
Toma nota que las siguientes formulas son para escenarios LowRes, para escenarios HighRes se usan pequeñas variaciones que aclarare mas adelante…Antes de proseguir, es recomendable que tu sprite este recortado y coloques tu sprite de forma centrada (sobre todo en el eje X) en tu SFF, asi te evitaras un dolor de cabeza cuando tengas que reacomodarlo con el parámetro Start, ya que simplemente lo puedes dejar en 0, pues el sprite esta centrado en el sff. Esto lo puedes lograr usando el botón centrar en Fighter Factory.
Ok sigamos con el tutorial…
Usando Xscale:
Si recuerdas Xscale esta compuesto por dos parámetros:
• Xscale se compone de dos valores, el primero es el multiplicador de la base menor del sprite, el segundo parámetro es el multiplicador de la base mayor del sprite. Esto significa que estos parámetros se van multiplicar por el delta que le demos al sprite….
Por lo general el primer valor debe ser menor que el segundo, esto para que de el efecto de que la base mayor se mueve mas rápido que la menor.
El primer valor casi siempre se deja en 1, ya que eso equivale al delta en X que estamos usando (1 x # = #), dejando asi el campo libre para que solo nos preocupemos por calcular el segundo valor, ósea el movimiento de la base mayor. Entonces tenemos que…
Xscale=primer valor (multiplicador del techo/base menor), segundo valor (multiplicador del fondo/base mayor).
Xscale= 1, X
Usamos 1 por lo que ya aclaramos en el párrafo anterior, ahora solo nos resta calcular “X”, para eso vamos a usar la formula de VIB, que nos dice que…
x = ((1-d)*B/A+1)/d
Donde:X= segundo valor que queremos encontrar
1= es una constante
D= delta que estas usando en tu sprite
A= Parte del sprite que esta por encima de los pies del personaje
B= Parte del sprite que esta por debajo de los pies del personaje
H= Solo como referencia es altura del sprite, A+B= H
Para que queden más claros estos últimos valores, veamos una imagen.
Ahora vamos a sustituir los valores en la formula…
Obteniendo el Delta...
Primero vamos poner los deltas, el que nos importa en este caso es el delta en X, lo recomendable es que uses un delta menor a 1 en escenarios Lowres y un delta menor 2 pero mayor a 1 en Hires, resumiendo:
Lowres= Delta menor a 1.
Hires= Delta menor a 2, pero mayor a 1.
Si vas a crear un stage sacado de un juego, deberías obtener el delta del sprite en el juego, si es original puedes optar por inventarlos.Pero recuerda que tú eres el creador, si quieres probar con otros valores, adelante.
Para este caso, supongamos que tenemos un valor delta de 0.7
Bueno, con esto ya tenemos el valor de d, ahora vamos a sacar los demás.
Obteniendo el valor de B...
Antes fijate en esta imagen, revisa los valores y entiende el porque de ellos, despues continua leyendo...
Primero sacamos “B”, esto lo hacemos con el zoffset, en la imagen el escenario usa un zoffset de 215, con eso y sabiendo que la altura de la pantalla es como máximo 240, podemos obtener “B”
B= Altura de la pantalla – Zoffset
B= 240-215
B=25
Obteniendo el valor de A...
Ahora saquemos A, para eso vamos a usar el zoffset que existe en el límite superior del sprite del suelo. Esto lo podemos obtener al jugar con el valor del zoffset, cámbialo hasta que logres que el char se coloque en el limite superior del sprite… es recomendable usar un char con pie plano para esta tarea, KFM es una buena opción. No te olvides de regresar el zoffset a su valor correcto al finalizar.
Como vemos en la imagen en ese nivel el zoffset es de 165, luego entonces con eso podemos sacar A, pero primero necesitamos sacar H, (recuerda que H=A+B)
H= Altura de la pantalla – Zoffset en el limite superior del sprite
H= 240 – 165
H= 75
Luego entonces…
H= B+A
75=25+A
A= 75-25
A=50
Con eso ya completamos todos los valores que necesitamos para nuestra ocasión asi que vamos a sustituir..
D= 0.7
B= 25
A= 50
x = ((1-d)*B/A+1)/d
x = ((1-0.7)*25/50+1)/0.7
x= 1.6428571428571428571428571428571
Una forma fácil de obtener el resultado, es pegar la ecuación en la calculadora de windows, o lo puedes hacer manual si asi lo deseas. :P
Y con eso ya obtuvimos el valor de X, que remplazando en nuestro código quedaría asi…
[BG my_parallax_element]
type = parallax
spriteno = 10, 0
delta=
0.7,1
xscale = 1.6428571428571428571428571428571Si hiciste todo correctamente hasta ahora, veras que tu parallax esta bien programado y los personajes no se deslizaran.
Usando Width:
Para width es el mismo procedimiento que xscale, las únicas diferencias es que en ves de usar 1 como primer valor, usamos el ancho del sprite, y para X, el resultado que obtuvimos en la ecuación, lo multiplicamos por el ancho del sprite, osea su formula es la siguiente…
x = (ancho del sprite) por ((1-d)*B/A+1)/d
Lo cual usando el ejemplo de xscale, seria:
X= 1600 x 1.6428571428571428571428571428571
-El sprite que mostre anteriormente tiene un ancho de 1600pixeles, lo puedes ver en la imagen que muestra Fighter Factory.
X= 2628.5714285714285714285714285714
Y el codigo quedaria:
[BG my_parallax_element]
type = parallax
spriteno = 10, 0
delta=
0.7,1
width= ancho del sprite, Xosea
[BG my_parallax_element]
type = parallax
spriteno = 10, 0
delta=
0.7,1
width= 1600, 2628.5714285714285714285714285714Ese seria el valor exacto, y al igual que xscale, si hiciste todo correctamente el parallax estará bien programado y no se deslizaran los personajes.
Con esto llegamos al final de la programación del parallax, ahora veremos como podemos variar la formula de acuerdo a cada situación en especifico.