Como criar um jogo de plataforma 2D na Unity
A Unity é uma das ferramentas mais poderosas e acessíveis para criar jogos 2D e 3D. Neste tutorial, vamos te mostrar como desenvolver um jogo de plataforma 2D simples na Unity, com movimentação lateral e pulo, usando o componente Rigidbody2D. Essa é uma ótima introdução ao desenvolvimento de jogos e uma excelente forma de montar seu portfólio.
Você vai entender conceitos fundamentais como entrada do jogador, física 2D e movimentação controlada por script em C#. Ideal para iniciantes que querem criar seu primeiro jogo!
Exemplo Prático: Ball Game
Aqui está o jogo que usaremos como referência:
Passo 1: Criando o Projeto na Unity
Abra a Unity Hub e clique em “New Project”.
Selecione o template 2D (Core).
Dê um nome como
BallGame
e clique em Create.

Passo 2: Criando o cenário com plataformas
No painel Hierarchy, clique com o botão direito e vá em
2D Object > Sprite
.Renomeie o novo objeto para Plataforma.
No Inspector, clique em “Sprite” e escolha uma imagem de plataforma (como a da imagem do tutorial).
Adicione o componente
BoxCollider2D
para permitir que o jogador colida com ela.Duplique a plataforma (
Ctrl + D
) e reposicione as cópias para formar o cenário com diferentes níveis, igual ao layout mostrado na imagem.

Passo 3: Adicionando o jogador
Crie um novo GameObject do tipo
Sprite
(pode ser uma esfera como na imagem).Adicione os seguintes componentes:
Rigidbody2D
CircleCollider2D
Player.cs

Passo 4: Criando o script de movimentação - Declarando variáveis
Essas variáveis serão usadas para controlar o movimento horizontal, a velocidade do jogador e o pulo:
private float movimentoH;
public float velocidade; // Exemplo: 10
public float jumpForce; // Força do pulo
private Rigidbody2D jogadorRb;
private float velocidadeY;
Explicação:
movimentoH
: armazena o valor do eixo horizontal (teclas A/D ou setas).velocidade
: define a velocidade da movimentação.jumpForce
: controla a força do pulo.jogadorRb
: acessa o componente Rigidbody2D.velocidadeY
: preserva a velocidade vertical.
Passo 5: Criando o script de movimentação - Iniciando o Rigidbody no Start
void Start()
{
jogadorRb = GetComponent();
}
Explicação:
Essa parte do código executa apenas uma vez quando o jogo começa, buscando o componente Rigidbody2D
para que o script possa controlar a física do personagem.
Passo 6: Criando o script de movimentação - Capturando o movimento no Update
void Update()
{
movimentoH = Input.GetAxisRaw("Horizontal");
if (Input.GetButtonDown("Jump"))
{
jogadorRb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
}
Explicação:
Input.GetAxisRaw("Horizontal")
: retorna -1 (esquerda), 0 (parado) ou 1 (direita).Input.GetButtonDown("Jump")
: detecta se o botão de pulo foi pressionado (geralmente a tecla espaço).AddForce
: aplica uma força vertical para o personagem pular.
Passo 7: Criando o script de movimentação - Aplicando o movimento
velocidadeY = jogadorRb.velocity.y;
jogadorRb.velocity = new Vector2(movimentoH * velocidade, velocidadeY);
Explicação:
Mantemos a velocidade vertical (
y
) para não interferir na gravidade.Alteramos apenas o valor de
x
com base na direção e na velocidade desejada.
Resultado Final
using UnityEngine;
public class Player : MonoBehaviour
{
private float movimentoH;
public float velocidade; //10
public float jumpForce;
private Rigidbody2D jogadorRb;
private float velocidadeY;
void Start()
{
jogadorRb = GetComponent();
}
void Update()
{
movimentoH = Input.GetAxisRaw("Horizontal");
if (Input.GetButtonDown("Jump"))
{
jogadorRb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
velocidadeY = jogadorRb.velocity.y;
jogadorRb.velocity = new Vector2(movimentoH * velocidade, velocidadeY);
}
}
Ao executar o código, você verá:
Um personagem (bolinha vermelha) posicionado sobre a plataforma superior esquerda.
Um cenário com plataformas fixas posicionadas em diferentes alturas.
O personagem se movimentando para a esquerda e direita com as teclas
A/D
ou←/→
.O personagem pulando ao pressionar a tecla
Espaço
.As colisões funcionando corretamente: o jogador não atravessa as plataformas.