Educação Financeira - Cartão de crédito665933.pptx
Aula anima-modelos
1. Projeto de jogos RAD:
Animações – Parte 2
Modelos Animados
Augusto Bülow
2. Unity3D
• Modelos Animados:
• Produzidos em softwares de criação 3D
• Animações: Mocap e outras técnicas
• Formatos (programas)
• Maya, Max, Blender, Cinema4D, Lightwave...
• Formatos .FBX, .OBJ, .3DS, .DXF
• FBX – bom formato (exportação /
importação)
3. Unity3D
• Formatos comuns, não necessitam
software adicional
• FBX, OBJ, 3DS...
• Formatos específicos, necessitam
programas adicionais no sistema
• MAX, MAYA...
4. Unity3D
• Animações exportadas junto ao modelo
• Animações: Arquivo único
• Split: define-se quadros para cada animação
• Saber o plano de animações: definir quadros
• Animações: Arquivos separados
• EX: nomemodelo@nomeanima.FBX
• Importa-se todos arquivos
• Junção – uso - automático
5. Unity3D
• Incluir modelo = Import New Asset
• Arquivo principal modelo
• Animações arquivos separados
(nome@anima)
6. Unity3D
• Modelo tem constituição variada
• Número de meshes, partes, bones, etc
• Depende do artista que o fez
• Tamanho controlável na importação
• Propriedades do modelo
• FBX Importer
• Scale Factor
10. Unity3D
• Animações disponíveis, como usar?
• Criar:
• Scripts ativando animações na hora certa
• Criar regras para animações básicas
• Com velocidade = andando
• Sem velocidade = parado (idle)
• Comandos – iniciam animações
• Botão pulo = pular
• Eventos
• Atingido = anima / morre
• Etc
11. Unity3D
• Usando Modelo como player
• Atribuir tipo de colisão
• (Rigidbody ou CharacterController)
• Criar códigos para movimento (script)
• EX: Player com CharacterController
• Inserir CharacterController no modelo
• Criar script básico de controle do movimento
12. Unity3D
• Código base – move (CharacterController)
var forca_move : Vector3;
var forca_rota : Vector3;
var velocidade = 20.0;
var gravidade = 0.5;
function Update () {
forca_move.x = Input.GetAxis("Horizontal") * Time.deltaTime * velocidade;
forca_move.y -= gravidade * Time.deltaTime;
forca_move.z = Input.GetAxis("Vertical") * Time.deltaTime * velocidade;
forca_move = transform.TransformDirection(forca_move);
pointer = GetComponent(CharacterController);
pointer.Move(forca_move);
forca_rota.y = Input.GetAxis("Mouse X") * 2;
transform.Rotate(forca_rota);
}
13. Unity3D
• Animações, definir regras básicas
• Movimento = velocidade = anima anda
//ANIMACAO
if (Mathf.Abs(forca_move.z) > 0) {
//animation.CrossFade("walk");
animation.Play("walk");
}
else {
//animation.CrossFade("idle");
animation.Play("idle");
}
14. Unity3D
• Animações por comandos específicos
• Pulo = anima pular
var no_chao : boolean;
if (Input.GetKeyDown("space") && (no_chao)) {
forca_move.y = forca_pulo;
animation.CrossFade("jump");
}
pointer.Move(forca_move);
no_chao = pointer.isGrounded; // APÓS O MOVE
15. Unity3D
• Necessário criar / aprimorar regras
• Se pulando não entra na regra de animação por
velocidade
• Como fazer? Variáveis. EX: var pulando
• Só acessa regra velocidade senão pulando
• Algumas animações tem que ser protegidas,
priorizadas
• Alguns casos, travando inclusive controles
adicionais do player
17. Unity3D
• Sincronizar momento da animação com ação
• Atirar no momento certo da animação
• Pular no momento certo da animação
• Vários modos de fazê-lo
• Evento vinculado na animação*
• Checar tempo atual da animação e disparar código
if ((animation["jump"].time >= 0.2 ) && (pulando == 1)) {
forca_move.y = forca_pulo;
pulando = 2;
}
18. Unity3D
• Segurando uma animação (pulo = no ar)
• Possível usar animações separadas para os estágios:
• pular, no ar, volta chão
• Possível codificar para manter animação em um ponto:
if (pulando == 2 && animation["jump"].time >= 0.6 )
animation["jump"].time = 0.6;
if (no_chao && pulando >= 2) {
if (animation["jump"].time < 0.9) { pulando = 3; }
else { pulando = 0; }
}