CRIANDO JOGO DE PLATAFORMA 3D NA UNITY
Um jogo de plataforma 3D é um gênero de videogame caracterizado por seu foco na navegação por ambientes que envolvem a movimentação do personagem em várias superfícies e a superação de obstáculos, geralmente através de saltos. Esses jogos têm como elemento central a habilidade do jogador de controlar um personagem que se movimenta por plataformas elevadas, evitando quedas, enfrentando inimigos e coletando itens.
Características Principais de um Jogo de Plataforma 3D:
- Plataformas elevadas
- Desníveis e Pulos
- Armadilhas
- Inimigos
- Itens
- Arte e Animação




Exemplos de Jogos de Plataforma 3D:
- Super Mario Bros.: Um dos exemplos mais icônicos, com mecânicas de pulo e coleta de itens.
- Sonic the Hedgehog: Conhecido pela velocidade e design de níveis que desafiam os reflexos do jogador.
- Crash Bandicoot: Um exemplo de jogo de plataforma 3D com níveis cheios de obstáculos e inimigos.

Tutorial de jogo de plataforma 3D unity:
Passo 1:
Criar um novo projeto na unity

Passo 2:
Criar a primeira parte do desafio com a coleta de moedas

Passo 3:
Criar scripts para moeda e para o jogador
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coin : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
Player player = other.GetComponent();
//The number of coins is updated
player.ColetarMoedas();
//The coin that was collected is destroyed
Destroy(gameObject);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
//criar variavel da moeda
public int moeda = 0;
//função de coletar moeda
public void ColetarMoedas()
{
//aumentando numero de moedas
moeda = moeda + 1;
print("Moedas coletadas: " + moeda);
}
}
Passo 4:
Criar a segunda parte do desafio com trampolins

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class trampolim : MonoBehaviour
{
//variavel para usar a class jump
Jump puloJogador;
//tamanho do pulo no trampolim
public float puloTrampolim = 5f;
//colindindo com o trampolim- inicio da colisao
private void OnTriggerEnter(Collider other)
{
//usando o componente do jump
puloJogador = other.GetComponent();
//aumentando o pulo do trampolim
puloJogador.jumpStrength = puloTrampolim;
}
//colisão quando sair do trampolim
private void OnTriggerExit(Collider other)
{
//usando o componente do jump
puloJogador = other.GetComponent();
puloJogador.jumpStrength = 2f;
}
}
Passo 5:
Criar a terceira parte do desafio com teleporte. Nessa etapa é necessário criar 2 objetos: o teleport e spawnPlayer. O spawnPlayer pode ser um objto invisível como no exemplo abaixo, ou um objeto real.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teleport : MonoBehaviour
{
// objeto jogador
public GameObject player;
//da posição de saida do jogador
public Transform spawnPlayer;
//veirificando colisão
private void OnTriggerEnter(Collider other)
{
//alterar a posição do jogador
player.transform.position = spawnPlayer.transform.position;
}
}
Passo 6:
Criar a quarta parte do desafio com acelerador. Nessa etapa é necessário criar o objeto de acelerador, representado pelas setas na imagem abaixo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Speed : MonoBehaviour
{
public float speedArrows;
void OnTriggerEnter(Collider other)
{
FirstPersonMovement movement = other.GetComponent();
if (movement != null)
{
movement.speed *= speedArrows;
}
}
void OnTriggerExit(Collider other)
{
FirstPersonMovement movement = other.GetComponent();
if (movement != null)
{
movement.speed /= speedArrows;
}
}
}
Passo 7:
Agora que já temos nosso personagem se movimentando pela fase e interagindo com o ambiente, chegou a hora de implementar algo que todo jogo de ação precisa: um sistema de dano! Vamos aprender como fazer com que nosso jogador perca vida ao entrar em contato com armadilhas!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Damage : MonoBehaviour
{
public float damage = 1f;
private void OnTriggerEnter(Collider other)
{
PlayerMethods player = other.GetComponent();
if (player != null)
{
player.life -= damage;
}
}
}
Para o script do jogador:
A variável life
vai garantir que o sistema de dano funcione corretamente, já que é ela que será diminuída quando o jogador encostar em uma armadilha.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerMethods : MonoBehaviour
{
//criar variavel da moeda
public int moeda = 0;
// Variável de vida do jogador
public float life = 10f;
//função de dano do player
public void DamagePlayer()
{
life -= 1; // Método para diminuir a vida
}
//função de coletar moeda
public void ColetarMoedas()
{
//aumentando numero de moedas
moeda = moeda + 1;
print("Moedas coletadas: " + moeda);
}
}
void Update()
{
if (life > 0)
{
print("Tá vivo"); // Mostra que o jogador ainda está vivo
}
else
{
SceneManager.LoadScene("game"); // Reinicia o jogo se a vida acabar
}
}
}
Passo 8:
As plataformas móveis são um elemento clássico nos jogos de plataforma, e são perfeitas para aumentar o desafio do jogador. Neste passo, vamos ensinar como criar essas plataformas e fazer com que elas se movam automaticamente para frente e para trás.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Plataform : MonoBehaviour
{
public int speed = 1; // Velocidade da plataforma
public float MaxDistance = 0.5f; // Distância máxima que a plataforma alcança
private Vector3 positionNow; // Posição inicial da plataforma
private Vector3 direction; // Direção do movimento
public bool plataform; // Definindo se a plataforma vai para frente ou para trás
private void Start()
{
positionNow = transform.position; // A posição inicial é capturada
direction = plataform ? Vector3.forward : Vector3.back; // Definindo a direção inicial
}
void Update()
{
// Calcula a distância entre a posição atual e a posição inicial
float distance = Vector3.Distance(positionNow, transform.position);
// Verifica se a plataforma atingiu a distância máxima
if (distance >= MaxDistance)
{
direction *= -1; // Inverte a direção quando a distância máxima é alcançada
positionNow = transform.position; // Atualiza a posição inicial
}
// Movimenta a plataforma na direção definida
transform.position += direction * speed * Time.deltaTime;
}
}

FERRAMENTA DOS ASSETS
UNITY ASSET
Uma loja online integrada ao Unity onde você pode comprar e baixar assets criados por desenvolvedores e artistas. Inclui uma ampla gama de recursos gratuitos e pagos.