Rudimentos de las animaciones en Unity

Rudimentos de las animaciones en Unity

Unity  gestiona las animaciones a través de una máquina de estados finita denominada ‘Animator Controller‘ que se asocia a un GameObject (es decir un objeto de la escena) y en la que se incluyen las animaciones, llamadas ‘Animation‘… como supongo que algunos lectores estarán pensando “¡Eh, eh, más despacio!” voy a empezar desde el principio:

En Unity un Gameobject es todo aquel elemento que forma parte de nuestro juego conteniendo distintos elementos y propiedades en función de su objetivo; por ejemplo, una luz sería un Gameobject, el avatar del jugador otro y el área invisible que activa una puerta también. Es decir, son los ladrillos con los que construimos los niveles de nuestro juego.

Por otro lado, una máquina de estados finitos (FSM) es un sistema de abstracción que define los estados posibles de un sistema y las reglas para cambiar entre esos estados. En Unity hay varios sistemas que usan máquinas de estados finitos para definir su comportamiento. Un ejemplo de una máquina de estados es la siguiente:

En esta FSM tenemos una hormiga que está buscando comida. Si la encuentra irá a su casa, si no morirá. Mientras no llegue a su casa seguirá dirigiéndose a ella, si encuentra veneno morirá y si llega a su casa se podrá a buscar agua. Continuará buscándola hasta que la encuentre o muera y, si la encuentra, volverá a buscar comida; empezando de nuevo el proceso.

Pues bien, uno de esos sistemas que usan máquinas de estados es el controlador de animaciones (Animator Controller); en él definiremos las reglas que hacen que se pase de una animación a la siguiente. Para establecer esta estructura de animaciones necesitamos dos cosas: un GameObject y una sprite sheet (hoja de sprites -este último término es un anglicismo sin traducción y se refiere a cada uno de los dibujos que conformarán la animación-). Crearemos el GameObject y le asociaremos un componente Sprite Renderer (es decir, es un objeto que tiene que mostrar un elemento gráfico) al que añadiremos nuestro sprite sheet.

Inicialmente cargará la imagen como un todo, pero indicando que el sprite es de tipo multiple  y usando el Sprite Editor podemos definir el tamaño de cada uno de los fotogramas y Unity creará automáticamente la secuencia de movimiento de todos los fotogramas.

Una vez hecho esto debemos añadir un Animator Controller a nuestro GameObject y, cada una de las animaciones de las que queramos disponer, como Animation.

Nota importante: Siempre que trabajemos con el Animation Controller o con elementos Animation debemos tener seleccionado el GameObject con el que vamos a trabajar o Unity no nos permitirá realizar ninguna acción. Seguramente habrá un muy buen motivo para ello pero, principalmente, lo que nos va a es a provocar dolores de cabeza intentando descubrir el porqué no funciona correctamente el Animator Controller.

Dentro de la ventana de Animation podemos pinchar y arrastrar los fotogramas de nuestro Sprite Sheet para añadir cada uno de las imágenes que conforman la animación; el valor de ‘Samples’ son las imágenes por segundo que mostrará Unity.

Cuando tenemos nuestras animaciones preparadas podemos ir al Animator, que es lo que antes explicamos: una máquina de estados finitos. En él arrastramos las animaciones y establecemos transiciones entre ellas. Las transiciones pueden ser de múltiples tipos: en base a tiempo o a ciclos de animación, disparadas por una función, por una variable de estado o por interacción con otros sistemas de Unity.

Y grosso modo esto es una rápida y superficial presentación del sistema de animaciones de Unity. Su complejidad o sencillez depende directamente de lo profundo que queramos entrar a trabajar con él puesto que tiene infinidad de opciones que requerirían muchas entradas para entrar a rascar algo más que su superficie.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *