1.
Preparar o Ambiente
1. Abrir o Unity e Criar um Projeto
o Abra o Unity Hub e crie um novo projeto 3D (pode ser do tipo Core 3D).
o Escolha um nome para o projeto (ex.: "PersonagemAnimado") e clique em Create
Project.
2. Baixar ou Criar um Personagem
o Se você já tem um modelo de personagem (ex.: .fbx ou .obj), pule para o próximo
passo.
o Caso não tenha, procure na Unity Asset Store:
▪ No Unity, vá em Window > Asset Store.
▪ Pesquise por "Free Characters" e baixe um pacote como o Unity Standard
Assets ou algo similar.
2. Importar o Personagem para a Cena
1. Importar o Arquivo do Personagem
o Arraste o arquivo do personagem para a pasta Assets no Unity (normalmente no
formato .fbx, .obj ou .prefab).
2. Adicionar à Cena
o Arraste o modelo do personagem da pasta Assets para a janela de cena (a janela
com o ambiente 3D).
o Ajuste o personagem:
▪ Use as ferramentas de Move, Rotate, e Scale no topo do Unity para
posicioná-lo corretamente (posição (0, 0, 0) é um bom ponto inicial).
3. Configurar o Animator
1. Criar um Animator Controller
o Na pasta Assets, clique com o botão direito e selecione Create > Animator
Controller.
o Nomeie-o (ex.: "PersonagemAnimator").
2. Adicionar o Animator ao Personagem
o Selecione o personagem na cena.
o No painel Inspector, localize o componente Animator.
▪ Se não tiver um, adicione-o clicando em Add Component e procurando
por Animator.
o No campo Controller, arraste o Animator Controller que você criou.
3. Adicionar as Animações
o Certifique-se de que seu modelo 3D tem animações.
▪ Se for um modelo .fbx, clique nele na pasta Assets e veja no Inspector se
ele tem animações listadas.
o Arraste as animações (ex.: Idle, Walk, Run) para dentro do Animator (clique duas
vezes no Animator Controller para abrir a janela Animator).
o Conecte as animações com transições:
▪ Clique com o botão direito em uma animação e escolha Make Transition
para conectá-la a outra.
4. Configurar Parâmetros no Animator
1. Adicionar um Parâmetro de Velocidade
o No Animator, clique na aba Parameters (à esquerda da janela).
o Clique em + e escolha Float.
o Nomeie o parâmetro como Speed.
2. Configurar Transições
o Clique nas transições (as setas entre as animações) no Animator e, no Inspector,
configure condições:
▪ Idle → Walk: Adicione a condição Speed > 0.1.
▪ Walk → Run: Adicione a condição Speed > 3.0.
▪ Run → Walk: Adicione a condição Speed <= 3.0.
▪ Walk → Idle: Adicione a condição Speed <= 0.1.
5. Criar um Script para Controlar o Personagem
1. Criar o Script
o Na pasta Assets, clique com o botão direito e selecione Create > C# Script.
o Nomeie o script como "PlayerController".
2. Escrever o Código
o Dê um duplo clique no script para abri-lo no editor (geralmente o Visual Studio).
o Substitua o conteúdo com o seguinte:
using UnityEngine;
public class PlayerController : MonoBehaviour
public Animator animator;
public float walkSpeed = 2f;
public float runSpeed = 5f;
private float speed = 0f;
void Update()
// Capturar entrada do jogador
float horizontal = [Link]("Horizontal");
float vertical = [Link]("Vertical");
// Calcular movimento
Vector3 direction = new Vector3(horizontal, 0, vertical).normalized;
if ([Link] >= 0.1f)
// Detectar se o jogador está correndo
bool isRunning = [Link]([Link]);
speed = isRunning ? runSpeed : walkSpeed;
// Mover o personagem
[Link](direction * speed * [Link], [Link]);
else
{
speed = 0f; // Parar movimento
// Atualizar o parâmetro "Speed" no Animator
[Link]("Speed", speed);
6. Conectar o Script ao Personagem
1. Adicionar o Script
o Arraste o script PlayerController para o personagem na cena (ou clique em Add
Component no Inspector e procure pelo script).
2. Conectar o Animator
o No campo Animator no script (no painel Inspector), arraste o componente
Animator do personagem.
7. Testar o Jogo
1. Iniciar o Jogo
o Clique em Play no topo do Unity.
o Use as teclas WASD ou setas do teclado para mover o personagem.
o Pressione Shift enquanto anda para correr.
2. Verificar as Animações
o O personagem deve alternar entre as animações Idle, Walk e Run dependendo da
velocidade.
8. Ajustes Finais
• Animações Travando?
o Ajuste o tempo das transições no Animator para deixá-las mais suaves.
• Velocidade ou Movimento Não Está Bom?
o Tente ajustar os valores de walkSpeed e runSpeed no script ou diretamente no
Inspector.
• A Câmera Não Segue o Personagem?
o Adicione uma câmera que siga o personagem. Você pode usar o Cinemachine
(baixe via Unity Package Manager).
EXPLICAÇAÕ DO SCRIPT
O Código Explicado
using UnityEngine;
• using UnityEngine;
o Importa o namespace do Unity, que contém todas as classes e métodos
necessários para trabalhar com jogos (ex.: MonoBehaviour, Transform, Animator,
etc.).
public class PlayerController : MonoBehaviour
• public class PlayerController : MonoBehaviour
o Define uma classe chamada PlayerController.
o MonoBehaviour: É a classe base que todos os scripts do Unity devem herdar para
interagir com objetos na cena (ex.: detectar entradas do jogador, atualizar
animações, etc.).
public Animator animator;
public float walkSpeed = 2f;
public float runSpeed = 5f;
private float speed = 0f;
• Animator animator;
o Permite controlar o componente Animator do Unity para trocar as animações do
personagem.
o Você conecta este campo ao Animator do personagem no Inspector.
• float walkSpeed e float runSpeed
o walkSpeed define a velocidade do personagem ao andar.
o runSpeed define a velocidade do personagem ao correr.
• float speed
o Armazena a velocidade atual do personagem, que muda dependendo se ele está
parado, andando ou correndo.
void Update()
• void Update()
o O método Update é chamado uma vez por quadro (frame) durante o jogo.
o É aqui que verificamos as entradas do jogador e atualizamos a lógica do
movimento e animação.
float horizontal = [Link]("Horizontal");
float vertical = [Link]("Vertical");
• [Link]
o Detecta as entradas do jogador pelo teclado:
▪ Horizontal: Corresponde às teclas A/D ou setas esquerda/direita.
▪ Vertical: Corresponde às teclas W/S ou setas cima/baixo.
• Esses valores vão de -1 (movimento na direção oposta) até 1 (movimento na direção
correta).
o Por exemplo:
▪ Pressionar W ou seta para cima faz vertical = 1.
▪ Pressionar S ou seta para baixo faz vertical = -1.
Vector3 direction = new Vector3(horizontal, 0, vertical).normalized;
• Vector3 direction
o Cria um vetor 3D com as direções capturadas.
o normalized: Garante que a direção tenha um comprimento de 1 (normaliza o
vetor), o que evita que o personagem mova mais rápido ao andar diagonalmente.
if ([Link] >= 0.1f)
• [Link]
o Calcula o comprimento do vetor (a força do movimento).
o Se o comprimento for maior ou igual a 0.1, significa que o jogador está tentando
se mover.
bool isRunning = [Link]([Link]);
speed = isRunning ? runSpeed : walkSpeed;
• [Link]([Link])
o Detecta se a tecla Shift Esquerdo está pressionada.
o isRunning será verdadeiro se o jogador estiver segurando Shift.
• speed = isRunning ? runSpeed : walkSpeed;
o Operador ternário (? :):
▪ Se isRunning for verdadeiro, speed = runSpeed.
▪ Caso contrário, speed = walkSpeed.
[Link](direction * speed * [Link], [Link]);
• [Link]
o Move o personagem na direção indicada.
• direction * speed
o Multiplica a direção pelo valor de velocidade (andar ou correr).
• [Link]
o Garante que o movimento seja independente da taxa de quadros (frames). Sem
isso, o movimento seria mais rápido em computadores mais potentes.
• [Link]
o Move o personagem no espaço global (não depende de sua rotação).
else
speed = 0f;
• Se o jogador não estiver pressionando as teclas de movimento, a velocidade é definida
como 0, para que ele fique parado.
[Link]("Speed", speed);
• [Link]
o Atualiza o valor do parâmetro Speed no Animator.
o Isso controla qual animação será exibida:
▪ Speed = 0: O personagem está parado (Idle).
▪ Speed > 0 e <= walkSpeed: O personagem está andando (Walk).
▪ Speed > walkSpeed: O personagem está correndo (Run).
Resumo do Fluxo
1. O script captura as entradas do jogador (teclas WASD, setas e Shift).
2. Calcula a direção do movimento e define a velocidade (andar ou correr).
3. Move o personagem na cena usando Translate.
4. Atualiza o parâmetro Speed no Animator para trocar entre as animações.