Tópicos Especiais em  
Engenharia de Software (Jogos II)  
Aula 06 – Animação  
Edirlei Soares de Lima  
<edirlei@iprj.uerj.br>  
Unity 3D: Animação  
•
A Unity suporta animações criadas nas principais ferramentas  
de modelagem e animação 3D.  
–
–
–
–
–
Animation Clips  
Importação de Animações  
Animator Component  
Animator Controller  
Humanoid Avatars  
Animation System  
•
O sistema de animação da Unity baseia-se em clipes de  
animação (Animation Clips), os quais contêm informações  
sobre como os objetos deve mudar de posição e rotação ao  
longo do tempo.  
–
Clipes de animação de fontes externas são criados por artistas ou  
animadores com ferramentas de modelagem 3D (3DS Max, Maya,  
etc.), ou são criados em estúdios de captura de movimento.  
–
Também é possível criar e editar clipes de animação pelo sistema de  
animação da Unity.  
Animation System  
Animações de Fontes Externas  
•
Animações de fontes externas são importadas para a Unity da mesma  
forma que os modelos 3D.  
–
Em alguns casos as informações de animação estão presentes no mesmo  
arquivo do modelo 3D, em outros casos podem estar em arquivos separados.  
–
Animações podem ser reusadas em outros personagens que compartilhem a  
mesma estrutura de esqueleto.  
•
•
Guia para exportar animações nas principais ferramentas de modelagem  
D: https://docs.unity3d.com/Manual/HOWTO-importObject.html  
3
Exemplos de modelos e animações:  
http://www.inf.puc-rio.br/~elima/jogos3d/modelos_personagens.html  
Importando Animações  
•
Modelo: http://www.inf.puc-rio.br/~elima/jogos3d/zombie_model.html  
Humanoid Animations  
•
Rig -> Animation Type -> Humanoid  
Generic Animations  
•
Animações de objetos e personagens que não possuem um  
esqueleto humano podem ser representadas usando a opção  
“Generic”:  
–
Rig -> Animation Type -> Generic  
Animation Clips  
•
Os clipes de animações importados  
podem estar definidos de três formas:  
1
) Um único modelo contêm todas as  
animações já separadas em clipes e  
nomeadas;  
•
Algumas vezes é necessário corrigir os intervalos  
dos frames;  
2
3
) Um único modelo contêm todas as  
animações em um único clipe;  
•
É necessário incluir, nomear e definir o intervalo de  
frames de cada animação manualmente.  
) Um arquivo contêm a geometria do modelo e  
outros arquivos contêm os clipes das  
animações;  
•
Os arquivos devem ser nomeados seguindo a  
nomenclatura: “modelName@animationName.fbx”.  
Looping Animations  
•
Para a maioria das animações, é  
extremamente importante que elas  
crie sequencias em loop que possam  
ser executadas sem saltos.  
–
Os indicadores verdes indicam que os  
frames da animação estão em loop.  
–
Os indicadores laranja indicam que os  
frames da animação não estão em loop e  
podem gerar saltos.  
–
Os indicadores vermelhos indicam que os  
frames da animação não estão em loop e  
vão gerar saltos.  
Animator Controllers  
•
Um Animator Controller permite organizar e manter o  
conjunto de animações de um personagem ou outro objeto  
animado.  
–
O controlador tem as referências aos clipes de animações e gerencia todos os  
estados e transições entre eles usando uma máquina de estados.  
–
Criar um novo Animator Controller: Create -> Animator Controller  
Animator Controllers  
•
A janela Animator permite ver e modificar os Animator  
Controllers:  
Máquina de Estados  
•
As máquinas de estados de animação baseiam-se na ideia de  
que os personagens de um jogo estão sempre realizando  
alguma ação (parado, andando, pulando, atacando, etc.).  
–
–
–
As ações são estados;  
As transições entre ações são definidas por transições entre estados;  
Cada transição pode ter um conjunto de pré-condições (parâmetros);  
Máquina de Estados  
•
É possível criar as máquina de estados visualmente:  
–
–
–
Animações são associadas aos estados;  
Transições são estabelecidas entre os estados;  
Os valores dos parâmetros das transições podem ser controlados por  
scripts.  
Parâmetros das Animações  
•
•
Os parâmetros das animação são variáveis que são definidas  
dentro do Animator Controller e podem ser usadas como  
condições para as transições.  
As variáveis podem ser acessadas por  
scripts:  
•
SetFloat, SetInt, SetBool, SetTrigger  
Controlando Animações  
public class Player : MonoBehaviour {  
public float WalkSpeed = 70;  
public float RotationSpeed = 50;  
private Animator animator;  
private CharacterController ch;  
void Start(){  
animator = GetComponent<Animator>();  
ch = GetComponent<CharacterController>();  
}
void Update(){  
float forwardMove = Input.GetAxis("Vertical");  
float rotation = Input.GetAxis("Horizontal");  
animator.SetFloat("Speed", forwardMove);  
ch.SimpleMove(transform.forward * forwardMove *  
WalkSpeed * Time.deltaTime);  
transform.Rotate(Vector3.up * rotation *  
RotationSpeed * Time.deltaTime);  
}
}
Exercício 16  
•
Utilize o Animator Controller para criar uma maquina de  
estados para controlar os comportamentos e animações do  
Lerpz.  
a) A maquina de estados deve ser composta  
pelos seguintes estados/animações:  
parado, andando, correndo, pulando  
chutando e socando.  
b) Em seguida, implemente um script para  
utilizar a maquina de estados para  
controlar e animar o Lerpz.  
http://www.inf.puc-rio.br/~elima/jogos3d/lerpz.html