Aula anima-modelos

18

Click here to load reader

description

Tutorial para adição de animação de modelos no unity3D

Transcript of Aula anima-modelos

Page 1: Aula anima-modelos

Projeto de jogos RAD:Animações – Parte 2Modelos Animados

Augusto Bülow

Page 2: Aula anima-modelos

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)

Page 3: Aula anima-modelos

Unity3D

• Formatos comuns, não necessitam software adicional • FBX, OBJ, 3DS...

• Formatos específicos, necessitam programas adicionais no sistema• MAX, MAYA...

Page 4: Aula anima-modelos

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: [email protected]

• Importa-se todos arquivos• Junção – uso - automático

Page 5: Aula anima-modelos

Unity3D

• Incluir modelo = Import New Asset

• Arquivo principal modelo• Animações arquivos separados

(nome@anima)

Page 6: Aula anima-modelos

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

Page 7: Aula anima-modelos

Unity3D

Page 8: Aula anima-modelos

Unity3D

• Importando textura do modelo• Importar BMAP

• Material criado automaticamente *• Re-atribuir BMAP para o material

Page 9: Aula anima-modelos

Unity3D

• Importar animações• Arquivos adicionais

• Mesma Escala (fator)*

• Animações disponíveis no modelo (cena)

• Atribuição animas = automático (mesmo nome@anima)

• Anima selecionável: testar

Page 10: Aula anima-modelos

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

Page 11: Aula anima-modelos

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

Page 12: Aula anima-modelos

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);

}

Page 13: Aula anima-modelos

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");

}

Page 14: Aula anima-modelos

Unity3D

• Animações por comandos específicos

• Pulo = anima pularvar 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

Page 15: Aula anima-modelos

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

Page 16: Aula anima-modelos

Unity3D

if (Input.GetKeyDown("space") && (no_chao)) {forca_move.y = forca_pulo;

animation.CrossFade("jump");

pulando = 1;}

...

if (no_chao && pulando == 1) {

pulando = 0;

}

Page 17: Aula anima-modelos

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;

}

Page 18: Aula anima-modelos

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; }

}