Unity Mecanim Como reproduzir animação ao pressionar a tecla

Mecanim é uma ferramenta controlada por estado para Unity que oferece aos desenvolvedores controle de animação avançado e um editor rico em recursos.

Os recursos proeminentes do Mecanim são a mistura de animação e o redirecionamento de animação.

A combinação de animações é um processo automático de fazer transições suaves entre as animações.

Redirecionamento de animação é um processo de reaproveitar animações existentes para funcionar entre vários rigs de personagens, eliminando a necessidade de criar novas animações para cada novo personagem.

Neste tutorial, mostrarei como Animar um Cubo e reproduzir a Animação ao Pressionar a Tecla com o Mecanim.

Passos

Para animar um Cubo em Unity, siga os passos abaixo:

  • Criar novo Cubo (GameObject -> Objeto 3D -> Cubo)

  • Selecione o Cubo e abra a janela Animação (Janela -> Animação -> Animação)
  • Na janela Animação, clique em "Create", o que criará uma nova animação, um novo Animator Controller e anexará um componente Animator ao Cubo.
  • Nomeie a nova animação "SpinAnimation"

  • Na janela de animação, clique em AddProperty -> Transform -> Rotation
  • Esta animação terá 2 quadros, início e fim.
  • Para o primeiro quadro, definimos a rotação para (0, 0, 0)

  • Para o último quadro, definimos a rotação para (0, 360, 0)

A animação está pronta.

Dica: Para criar mais animações, basta clicar no nome da animação na janela Animação e clicar em "Criar novo clipe...".

Para configurar o Mecanim Animator Controller, siga os passos abaixo:

  • Clique duas vezes no ativo Animator Controller que foi criado com a animação

  • Nova janela intitulada "Animator" aparecerá, que deve se parecer com isto:

  • Você notará que há uma seta apontando de "Entry" para "SpinAnimation", o que significa que a animação será reproduzida assim que a cena começar, mas isso é não é o que queremos, queremos apenas reproduzir a animação ao pressionar a tecla.

Como o Mecanim requer uma animação de entrada, o que podemos fazer é criar um novo estado Vazio e torná-lo uma Entrada:

  • Clique com o botão direito na janela Animator -> Create State -> Vazio:

  • Selecione o estado da entrada -> clique com o botão direito nele -> Defina o estado padrão da StateMachine e aponte para "New State":

A última coisa a fazer é fazer uma transição para SpinAnimation, mas só queremos fazer a transição quando a condição específica for atendida, é quando a guia Parâmetros entra em vigor :

  • Clique na guia Parâmetros na janela do Animador e clique no símbolo (+):

Você notará que existem vários tipos disponíveis, mas, por enquanto, selecionaremos Trigger, é semelhante a bool mas ao contrário de bool, ele é definido automaticamente como falso assim que a animação é concluída, útil para animações únicas:

  • Nomeie o parâmetro "spinTrigger"

  • Por último, selecione "Any State" -> Clique com o botão direito sobre ele -> Faça a transição e aponte para SpinAnimation:

  • Clique na seta de transição e na Visualização do Inspetor em Condições, clique em (+) e verifique se o parâmetro spinTrigger está selecionado

  • Por padrão, as animações criadas com Unity têm o loop ativado, mas como queremos reproduzir a Animação apenas uma vez, o que precisamos fazer é selecionar o Clipe de Animação na visualização do Projeto e desmarcar a caixa de seleção Loop Time:

Para poder controlar os parâmetros do Mecanim a partir de um script, precisaremos usar funções especiais, verifique o código abaixo:

  • Crie um novo script, chame-o de "AnimationTest", remova tudo dele e cole o código abaixo dentro dele:

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • Anexar script AnimationTest.cs ao cubo com o componente Animator:

Agora vamos testar:

Sharp Coder Reprodutor de vídeo

Tudo funciona como esperado, pressionando Q reproduz a animação.