1 de enero de 2015

¿Cómo se hace un videojuego? (5/7)

Ahora que ya hemos definido la animación de las acciones del personaje, ya estamos listos para programar sus movimientos. Anteriormente habíamos definido las coordenadas del personaje en la pantalla por medio de un par de variables x e y. Entonces, para darle movimiento al personaje lo haremos modificando los valores de dichas variables. En la física los movimientos de los cuerpos se pueden descomponer de la siguiente manera:
Posición = Posición + Velocidad
Velocidad = Velocidad + Aceleración
Así que, utilizaremos variables de velocidad y aceleración para cada eje.

Nota: en este juego omitiremos la aceleración en el eje x, ya que el movimiento de desplazamiento del personaje en dicho eje, es lineal.

A la variable de aceleración en el eje y le asignaremos el nombre "gravedad", ya que es la que provoca la caída libre del personaje. Para entender cómo funcionan las variables en el transcurso del juego, veamos el siguiente ejemplo:

Supongamos que el personaje se encuentra en la coordenada (300, 200). La variable de velocidad en el eje y (llamada vy) del personaje, al momento de efectuar un salto, toma el valor -7 y la variable de aceleración (a la que llamamos gravedad) es 0.5. Así que, cuando transcurren 0.028 segundos, la posición en el eje y se suma a la variable de velocidad, es decir que se le restan 7 pixeles (posición = 200 + (-7)) y a la velocidad se le suma la aceleración (gravedad), es decir se le suman 0.5 pixeles (velocidad = -7 + 0.5). El resultado es que la posición cambia a 193 y la velocidad a -6.5. Esto sucede sucesivamente tal como lo muestra la siguiente imagen:
Los valores que presenta la imagen son enteros, ya que los pixeles no se pueden dividirse en números racionales. Por eso, los valores reales que toman las variables son los de la siguiente tabla:

Segundos Posición Y Velocidad Y
0.028 200 -7
0.056 193 -6,5
0.084 186,5 -6
0.112 180,5 -5,5
0.140 175 -5
0.168 170 -4,5
0.196 165,5 -4
0.224 161,5 -3,5
0.252 158 -3
0.280 155 -2,5
0.308 152,5 -2
0.336 150,5 -1,5
0.364 149 -1
0.392 148 -0,5
0.420 147,5 0
0.448 147,5 0,5
0.476 148 1
0.504 149 1,5
0.532 150,5 2
0.560 152,5 2,5
0.588 155 3
0.616 158 3,5
0.644 161,5 4
0.672 165,5 4,5
0.700 170 5
0.728 175 5,5
0.756 180,5 6
0.784 186,5 6,5
0.812 193 7
0.840 200 7,5

Si quisiéramos ver la trayectoria del personaje, podríamos graficar los valores de la tabla de la siguiente manera:
Ahora, nos resta determinar cuándo debe detenerse el desplazamiento. Para eso, debemos detectar la colisión del personaje con los elementos del mapa.