1 de febrero de 2015

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

Como ya mencionamos anteriormente, el personaje tiene variables de posición x e y. Pero, ¿en qué parte del sprite se aplica la coordenada? Se aplica en un punto que normalmente es llamado hot spot o pivot. En este caso sería el punto (rojo) que nos muestra la siguiente imagen:
Es un punto que (para este juego) determina que el sprite se imprime 12 pixeles a la izquierda y 31 arriba de la coordenada dada. Es decir que si el sprite se encuentra en la coordenada (0,0) se vería en la siguiente posición:
Ahora bien, ¿cómo sabemos dónde puede pararse el personaje o hasta donde puede desplazarse? Por medio de las colisiones. Se verifican puntos arbitrarios del personaje y se comparan con los datos del mapa. Recordemos que nuestro mapa se compone de tiles, y que los tiles distintos de cero (tile color cielo), son tiles solidos que no pueden ser atravesados. Aunque esto se ha establecido para este ejemplo, puede ser ampliado y establecerse otros tiles que puedan ser atravesados. Los puntos que se verifican en este caso son los siguientes:
AS: Apoyo superior.  
LDA: Apoyo Lateral-Derecho-Alto
LIA: Apoyo Lateral-Izquierdo-Alto  
LDB: Apoyo Lateral-Derecho-Bajo  
LIB: Apoyo Lateral-Izquierdo-Bajo
AD: Apoyo Derecho  
AI: Apoyo Izquierdo
H: Hot Spot, o sea punto de referencia del sprite (x, y).

El punto AS es verificado cuando va hacia arriba, si el punto se encuentra dentro de un tile solido, se limita el movimiento del personaje. Los puntos LIA y LDA son verificados cuando va a la izquierda o derecha, e impiden que el personaje continúe si se encuentra con un tile solido "a la altura de la cabeza" (es decir, en el área superior del personaje). Los puntos LIB y LDB son verificados cuando va a la izquierda o derecha, e impiden que el personaje continúe si se encuentra con un tile solido "a la altura de las piernas" (es decir, en el área inferior del personaje). Los puntos AI y AD son verificados para determinar cuándo el personaje debe caer. Si ambos puntos se encuentran en áreas vacías, entonces el personaje deberá caer. En cada caso lo que se hace es convertir la coordenada del punto a verificar, en coordenada de tile. Luego, se consulta (en la variable de mapa) el tipo de tile que existe en esa coordenada convertida. Para este ejemplo se utilizaron estos puntos de verificación, pero dichos puntos pueden variar según el tipo de juego, dimensiones y características de cada personaje.