Habíamos visto anteriormente que en ocasiones, en nuestro juego debemos manejar una gran cantidad de
acciones y
animaciones para los personajes.
¿Cómo podemos manejar dicha información?
En uno de mis proyectos, los personajes cuentan con varias
acciones,
animaciones y además utilizan 2
cajas de colisiones (una de
vulnerabilidad y otra de
ataque).
De forma similar a como vimos en
Street Fighter 2, se utilizan variables que registran la siguiente información:
- SI: Slot de la secuencia donde inicia la acción.
- SR: Slot donde se repite la secuencia de la acción.
- SF: Slot de la secuencia donde finaliza la acción.
La información se toma de la siguiente tabla:
Cada slot contiene la siguiente información:
- ID Fot.: ID del fotograma de la hoja de sprites.
- Int.: intervalos de tiempo de juego que la frame de la animación se va a mostrar antes de avanzar a la siguiente frame.
- CXV: coordenada horizontal del centro de la caja de vulnerabilidad.
- CYV: coordenada vertical del centro de la caja de vulnerabilidad.
- RXV: radio horizontal de la caja de vulnerabilidad.
- RYV: radio vertical de la caja de vulnerabilidad.
- CXA: coordenada horizontal del centro de la caja de ataque.
- CYA: coordenada vertical del centro de la caja de ataque.
- RXA: radio horizontal de la caja de ataque.
- RYA: radio vertical de la caja de ataque.
La información se toma de la siguiente tabla:
La
hoja de sprites es similar a esta:
Ahora, a modo de ejemplo, examinemos
cuadro a cuadro la acción de
ataque:
La acción de atacar establece el
slot inicial en 40. El
slot 40 establece que el
ID del fotograma de la
hoja de sprites que será presentado es el 26. En la
figura podemos apreciar el
fotograma 26 que da inicio a la animación. Observamos según la
tabla que, entre cada
fotograma hay 6
intervalos de tiempo antes de pasar al
fotograma siguiente, excepto en el último
fotograma cuya duración es de 12
intervalos. Además, el último
fotograma se repite si no se pasa a otra acción. En ese caso, se debe establecer que al llegar a la conclusión del
slot e
intervalo, se pase a la acción siguiente (por ej: parado). También, podemos ver que en la imagen se ha marcado con una
cruz blanca la
coordenada de referencia donde se va a imprimir el
sprite, mientras que la
cruz roja indica el
centro de la caja de ataque.
Veamos más de cerca:
Según la
tabla de slots, vemos que en el primer
fotograma se nulifica (es decir, que todos los valores son iguales a cero) la
caja de vulnerabilidad. Esto se hizo con el propósito de que el balón no golpee accidentalmente el personaje al
ejecutar el ataque. También, vemos que el
centro de la caja de ataque se establece a 4
pixeles horizontales de las
coordenadas de referencia del sprite y a 52
pixeles verticales (rectángulo verde). Por otro lado, vemos el
radio horizontal y vertical establecido en 27 y 18
pixeles respectivamente (
rectángulo purpura).
Obviamente, este sistema se puede optimizar, por ejemplo, quitando de la
tabla de
slots la información de las
cajas de colisión y estableciendo una tercer
tabla que guarde dicha información asociándola a un
ID (como vimos en
Street Fighter 2).
Ahora, un video con los resultados: