[Unity3D] Tutorial - Animação de Personagem


Unity Develope Tutorial

Controle de animação para personagem no

 Unity3D


1ª - Controle de Animação

O componente AnimatorController permite que você organize e mantenha um conjunto de clipes de animação e Transições de animação para um personagem ou objeto. Na maioria dos casos, é normal ter várias animações e alternar entre elas quando ocorrem determinadas condições de jogo.



Por exemplo, você pode mudar de correr ( clipe de animação ) para um clipe de animação de salto sempre que a barra de espaço é pressionada. No entanto, mesmo se você tiver apenas com um único clipe de animação, ainda precisará colocá-lo em um AnimatorController para usá-lo em um GameObject.


Para criar manualmente um AnimatorController, clique com o botão direito do mouse na janela Project e clique em Create > Animator Controller, e dê um nome pro seu componente.


2ª - Navegação

Na janela Animator, u
se a roda de rolagem do mouse, ou equivalente, para ampliar, reduzir e movimentar.
  • Vá para Window → Animation → Animator

Agora que temos nosso componente AnimatorController, como podemos observar na janela Project.


Vamos adicionar os Clipes de Animação e 
 combinar as transição entre eles.
 

3ª - Clipes de Animação

Os clipes de animação são um dos elementos centrais do sistema de animação do Unity3D. O Unity suporta a importação de animação de fontes externas e oferece a capacidade de criar clipes de animação do zero no editor usando a janela Animation, como você pode ver abaixo.
  • Vá para Window → Animation → Animation

Para esse tutorial, iremos utilizar as animações prontas da Mixamo
O Mixamo é uma biblioteca com milhares de animações de personagens de corpo inteiro, capturadas de atores profissionais de movimento. Cada animação é transferida para seu próprio personagem e pode ser visualizada e editada diretamente com o Mixamo, para que você possa controlar a aparência de cada movimento.



Os Clipes de Animação usado no tutorial podem ser baixados aqui: [DOWNLOAD]

Obs: Após baixar e extrair o arquivo, importe para uma pasta do seu projeto.

4ª - O Personagem

O Unity oferece suporte a vários formatos de arquivo de modelos 3D. Internamente, o Unity usa o formato de arquivo .fbx. É uma prática recomendada usar o formato de arquivo .fbx sempre que possível.

Para esse exemplo iremos utilizar um modelo de personagem que eu mesmo modelei no Blender, também pode ser baixado aqui: [DOWNLOAD]


Depois de baixar o modelo e passar para pasta do seu projeto. Vamos seguir as etapas para preparar o personagem.
  • - Por padrão, quando você seleciona um Modelo no Projeto, o Unity determina qual tipo de animação melhor corresponde ao modelo selecionado e o exibe na guia Rig. Se o Unity nunca importou o arquivo, o tipo de Animação é definido como Nenhum.
Obs: Depois que um arquivo de modelo é importado pro seu projeto (FBX, COLLADA, etc.) você pode especificar que tipo de rig é na guia Rig das opções do Model Importer. Como pode ver na imagem abaixo :

  • - Depois de mudar o tipo de animação para Humanoid, vamos colocar nosso personagem no cenário e adicionar o componente Animator.


5ª - O Componente Animator

Use o componente Animator para atribuir animação a um GameObject na tua cena. O componente Animator requer uma referência a um AnimatorController que define quais clipes de animação usar e controlar, quando e como combinar e fazer as transições entre eles.
O componente Animator com um controlador e um avatar atribuídos.

6ª - Fluxo de trabalho de animação

Os clipes de animação são organizados em um sistema estruturado semelhante a um fluxograma dentro AnimatorController. O AnimatorController atua como uma “Máquina de Estado” que controla qual clipe deve estar sendo reproduzido no momento e quando as animações devem mudar ou se misturar.

Este diagrama mostra como os vários recursos (Clipes de Animação, um Animator Controller e um Avatar) são reunidos em um componente Animator em um GameObject:


7ª - Avatar

O sistema Avatar é como a Unity identifica que um determinado modelo animado é humanóide no layout e quais partes do modelo correspondem às pernas, braços, cabeça e corpo.
Devido à semelhança na estrutura óssea entre diferentes personagens humanóides, é possível mapear animações de um personagem humanóide para outro

8ª - Configurando o Avatar

Clique no arquivo do modelo > Na guia Rig da janela Inspector. Por padrão, a propriedade Definição de Avatar é definida como Criar a partir deste modelo. Se você mantiver essa opção, o Unity tentará mapear o conjunto de ossos definido no arquivo para um Avatar Humanóide.


Em alguns casos, você pode alterar esta opção para Copiar de outro Avatar para usar um Avatar já definido para outro arquivo de modelo. Por exemplo, se você criar um Malha (pele) em seu aplicativo de modelagem 3D com várias animações distintas, você pode exportar a Malha para um arquivo FBX e cada animação para seu próprio arquivo FBX. Ao importar esses arquivos para o Unity, você só precisa criar um único Avatar para o primeiro arquivo importado (geralmente o Mesh). Desde que todos os arquivos usem a mesma estrutura óssea, você pode reutilizar esse Avatar para o restante dos arquivos (por exemplo, todas as animações).

Obs: Se você habilitar esta opção, deverá especificar qual Avatar deseja usar definindo a propriedade Source.
Quando você clica no botão Aplicar, o Unity tenta corresponder a estrutura óssea existente à estrutura óssea do Avatar. Em muitos casos, ele pode fazer isso automaticamente analisando as conexões entre os ossos no equipamento.

9ª - Criando o Fluxograma

Agora que temos nosso personagem configurado, vamos adicionar as animações ao componente AnimatorController e combinar as transições para que alterne de estado sempre quando ocorrer determinadas condições de jogo, como pressionar espaço e fazer o jogador pular.
  • Clique no seu componente Animator e Vá para Window → Animation → Animator

Acesse a pasta de clipes de animação e arraste para janela Animator os clipes de animação Idle ( Parado) e Jump ( Pular ).


Como mencionado anteriormente, os Animator Controller são máquinas de estado contendo animações (estados). Qualquer personagem pode estar em um desses estados (reproduzir uma animação) de cada vez. Para alternar entre os estados ( animações), você precisa criar transições de estado.
  1. Adicione pelo menos dois estados arrastando e soltando duas animações na janela Animator. Você também pode apontar o cursor para um espaço vazio na Animator janela, pressionar o botão direito do mouse e selecionar Create State | Empty, selecione o estado e adicione uma animação para o 'Motioncampo' em Inspector.

  2. Clique com o botão direito do mouse no estado do qual deseja fazer a transição e escolha Make Transition.

  3. Arraste a transição para o estado para o qual deseja fazer a transição e clique com o botão esquerdo do mouse.

  4. Uma transição padrão será criada. O estado mudará depois que sua animação terminar de ser reproduzida. Para poder observá-lo no jogo, certifique-se de fazer a transição do estado padrão (laranja), pois somente o estado padrão será reproduzido quando o jogo iniciar.



Agora clique sobre a linha de transição Idle Jump e desmarque opção Has Exit Time. O Has Exit Time é para quando o tempo de saída estiver marcado, quando a animação for concluída, então a próxima animação será reproduzida.



Obs: Não esqueça que por padrão, quando você também importa clipes de animação pro Projeto,  Animação é definido como Nenhum. Clique sobre os clipe de animação para especificar que tipo de rig é na guia Rig das opções do Model Importer e mude o tipo de animação para Humanoid.




10ª - Parâmetros de animação

Parâmetros de animação são variáveis ​​que são definidas dentro de um Animator Controller que podem ser acessados ​​e atribuídos valores de roteiros. É assim que um script pode controlar ou afetar o fluxo de máquina de estado.

Os valores de parâmetro padrão podem ser configurados usando a seção Parameters na Janela do animador,  e são selecionável no canto superior direito da janela. Eles podem ser de quatro tipos básicos:
  • Inteiro - um número inteiro
  • Float - um número com uma parte fracionária
  • Bool - valor verdadeiro ou falso (representado por uma caixa de seleção)
  • Trigger - um parâmetro booleano que é redefinido pelo controlador quando consumido por uma transição (representado por um botão de círculo
Os parâmetros podem receber valores de um script usando funções na classe Animator: SetFloat , SetInteger , SetBool , SetTrigger e ResetTrigger.

  • Clique em Parameters → Bool. E crie uma variável com nome jump do tipo bool.    
  • Depois clique sobre a linha de transição Idle → Jump. E em Conditions, adicione a variável jump com valor true.



11ª - Script que modifica parâmetros com base na entrada do usuário.
  • Vá para Create → C# Script
  • Aqui está um exemplo de um script que modifica o parâmetro da animação com base na entrada do usuário, quando pressionar a tecla espaço do teclado.
Obs: O código  Input.GetKey() server para acionar eventos de teclado.
  • Clique sobre o personagem e adicione o script: player_controller.cs

Agora pronto, basta dar Play e pressionar espaço para que o personagem reproduza a animação de pular.

Post a Comment

Postagem Anterior Próxima Postagem