play animação movie like

Aprenda a controlar animações na Unity utilizando o Animator Controller. Execute facilmente a sua através de um parâmetro trigger.


Júlio Rodrigues ·

Existem algumas maneiras de se dar play em uma animação na Unity. A mais comum delas é a que será ensinada neste tutorial, através de Animator Controllers.

Também é possível utilizar a Playable API para alcançar este resultado. O overhead é muito menor mas esta alternativa é considerada avançada, evite-a se estiver iniciando no scripting C# da Unity.

Neste quebra-cabeça há algumas peças que precisam ser entendidas. Vamos ver um passo-a-passo de como iniciar a animação e uma descrição de cada uma dessas peças.

Este tutorial foi testado e feito com a Unity 2018.2.

Passo-a-passo para se dar play em uma animação

  1. Importar o modelo 3D.
  2. Importar a animação (ou cria-la na Unity).
  3. Criar um Animator Controller e configura-lo para ter um trigger.
  4. Utilizar o componente Animator em um script para disparar o trigger criado em 3.

Para os passos 1. e 2. basta você arrastar e soltar os assets para o diretório Assets do seu projeto que a Unity vai fazer a devida importação. Você também pode baixar direto da Asset Store.

Antes de irmos para as etapas 3. e 4. vamos entender melhor do que elas tratam.

O que é o Animator Controller?

A Unity utiliza um sofisticado sistema de controle, transição e blending de animações. No passado era muito conhecido como Mecanim.

Para um simples disparo de uma única animação, parece muito trabalho pra pouco retorno usar este sofisticado sistema. Quando você começar a usar várias animações para o mesmo personagem e quiser que as animações suavizem de uma pra outra, vai logo perceber que o que fluxo de trabalho proposto é muito interessante.

O centro desse controle é o Animator Controller. Um Animator Controller é um asset contendo informações sobre como se gerenciar e misturar as várias animações de seu personagem (ou objeto) e também as transições entre eles através da descrição de uma máquina de estados. Não se assuste pois para o que vamos fazer aqui a máquina é bem simples.

Asset animator controller salvo

Se você já possui os seus clipes de animação importados, o Animator Controller os usa para controlar qual (quais) animações vão ser executadas e em que momento dependendo do atual estado deste Animator.

Estados

Você vai ter estados como: parado (idle), andando, atirando, morrendo, etc. E entre os estados existem as transições. Em geral um personagem começa em Idle e pode alterar seu estado para algum desses outros com base em algum parâmetro e condições de transição.

Máquina com estados: Idle (estado padrão), Walk, Run e Jump.

Parâmetros

Os parâmetros de um Animator Controller são as variáveis controladas via script que permitem que você interaja com o animator. Voltando ao caso do Idle -> Andando, poderíamos ter um parâmetro velocidade e se a velocidade for maior ou igual a 0.1 então passaríamos de Idle para Andando.

Existem 4 tipos de parâmetros:

  1. Integer. É um número inteiro.
  2. Float. Um número real (com vírgula).
  3. Bool. Um verdadeiro ou falso.
  4. Trigger. Um verdadeiro ou falso especial que se delisga automaticamente.

Como perceberam que o parâmetro bool era muito usado sempre desligando-o de true para false logo em seguida, como no caso de uma animação de atirar, os desenvolvedores Unity criaram o tipo trigger que já faz esse trabalho pra gente.

Neste tutorial vamos usar um parâmetro trigger.

Básico de Transições

Os parâmetros são a base de grande parte das transições. Em cada estado você vai criar transições para outros estados e estabelecer as condições de transicão.

Neste exemplo criamos a transição Idle -> Walk caso o parâmetro "Horizontal" seja maior que 0.1

Transições também podem ocorrer automaticamente com o passar do tempo. Esta opção se chama Has Exit Time. Em settings é possível controlar o Exit Time.

Note que Exit Time não usa valores absolutos em segundos, mas sim um valor relativo de 0 a 1, ou seja, se temos um exit time de 0.8, no primeiro frame onde 80% da animação for concluída a transição vai começar.

Criando o Animator Controller que precisamos

Um animator Controller é um asset que precisa ser salvo no seu projeto. Clique com o botão direito na sua aba projeto e procure Create -> Animator Controller, dê um nome para o seu animator controller e aperte enter.

Você pode criar estados para o seu Animator Controller arrastando e soltando clipes de animação da aba Project para dentro da aba Animator (aberta através de um duplo clique no arquivo do seu asset) ou com o botão direito Create State -> Empty.

Estados das animações

Arraste e solte a sua animação para dentro da aba Animator para criar o estado de sua animação.

Neste exemplo eu também arrastei uma animação de Idle para a personagem ficar mais natural enquanto estiver parada.

Parâmetro

Agora que já possui os estados é preciso criar um parâmetro do tipo trigger que vai ser usado na transição entre o Idle e Attack.

Clique no botão de + no canto superior esquerdo da aba Animator

Escolha o tipo Trigger e o nomeie de Punch

Transição

Caso o seu estado Idle não esteja colorido de laranja clique o botão direito nele e escolha Set as Layer Default State. Com isso feito aperte com o botão direito no estado Idle e escolha dessa vez Make Transition, agora clique no estado alvo.

depois da transição criada e selecionada

Com a transição de ida selecionada, na aba Inspector (fica fora da caixa animator), adicione uma condição apertando no botão de +. Como você só possui um único parâmetro sua condição já estará configurada. Certifique-se de desmarcar a opção Has Exit Time logo acima.

Criando e configurando o personagem para usar este Animator Controller

Arraste o asset de seu modelo para a aba Hierarchy ou para dentro da tela da Scene. No Inspector adicione o componente Animator. Agora arraste e solte o controlador que você criou na aba Project para o campo Controller.

{ Pode ser necessário configurar um avatar para o seu modelo. Se você baixou o modelo da internet é alta a chance de vir um avatar pronto. Basta clicar na bolinha à direita do campo avatar e escolher um apropriado. }

Criando o script e disparando o trigger

Com o Animator configurado em seu personagem, chegamos a etapa final onde vamos disparar o trigger através de um script. Selecione o se personagem na aba Hierarchy, escolha Component e digite algo como PlayerController, escolha Script e aperte em Create and Add.

É sempre bom deixar o seu projeto organizado. Mova este arquivo criado na aba Project para alguma pasta onde você concentra os seus scripts.

Para podermos usar o componente Animator que criamos, o nosso script precisa fazer referência a este componente de alguma forma. Crie uma variável pública do tipo Animator em seu script.

using UnityEngine;

public class PlayerController : MonoBehaviour {

    public Animator animator;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
}

Depois arraste e solte o componente Animator para o campo Animator do novo script.

Vamos escolher a tecla J para disparar o trigger do nosso animator controller. Dentro de update iremos verificar se o jogador pressionou esta tecla.

void Update () {
    if (Input.GetKeyDown(KeyCode.J)) {
        animator.SetTrigger("Punch");
    }
}

Input.GetKeyDown só vai retornar true no frame em que o jogador começou a pressionar a tecla. Isto previne que a animação seja disparada em todo frame o que aconteceria se tivessemos usados a funcão Input.GetKey

Resultado Final: a unity-chan (mascote japonesa da Unity) executa uma animação de 2 socos.

Para onde ir agora?

Excelente! Agora você conseguiu dar o seu primeiro passo no sistema de animações da Unity. Mas eu acho que você quer continuar nesta caminhada, certo? Este sistema é realmente rico, sugiro alguns exercícios para os seus próximos passos:

Se ficou com qualquer dúvida pergunte-a nos comentários! Não deixe de compartilhar este artigo se você o achou útil, seus amigos também podem gostar.


Classificar em
  • unity
  • animator controller
  • tutorial
© Bladecast 2018. All rights reserved.