Tutorial: Jogo de Plataforma no Unity 5 – Parte 6 – Pulo

No tutorial anterior, habilitamos a gravidade do personagem e fizemos com que ele ficasse em cima da plataforma. Agora vamos ver como pular de uma plataforma para outra.

Vamos nessa!

Pulo do personagem

A primeira coisa a se fazer é colocar o nosso herói em uma layer diferente para que possamos separá-lo do cenário.

Selecione o objeto Heroi e no painel Inspector clique em Layer -> Add Layer… Agora preencha uma User Layer com o nome Jogador. Selecione o Heroi de novo e, quando você clicar em Layer, a que criamos vai aparecer. Basta selecioná-la e pronto.

1 - Add Layer

Agora vamos criar um objeto vazio e posicioná-lo nos pés do nosso personagem. Este objeto servirá para identificarmos quando o personagem está no chão.

Clique com o botão direito no objeto Heroi e selecione Create Empty. O objeto será criado como filho do objeto Heroi. Altere a posição dele para que ele fique nos pés do personagem e mude seu nome para ChaoCheck.

2 - Chao Check

O próximo passo é escrever o script para fazer o personagem pular.

Abra o script do Heroi e altere para ficar como abaixo. As linhas novas estão em negrito:

using UnityEngine;
using System.Collections;

public class Heroi : MonoBehaviour {
	Animator animator;
	float axis;
	Vector2 velocidade;
	bool ladoDireito = true;
	bool noChao = false;
	float chaoCheckRaio = 0.2f;

	public float MaxVelocidade = 10;

	public Transform ChaoCheck;
	public LayerMask OQueEChao;

	// Use this for initialization
	void Start () {
		animator = GetComponent<Animator> ();
	}

	void FixedUpdate()
	{
		noChao = Physics2D.OverlapCircle (ChaoCheck.position, chaoCheckRaio, OQueEChao);

		axis = Input.GetAxis ("Horizontal");

		if (axis > 0 && !ladoDireito)
			Vire ();
		if (axis < 0 && ladoDireito)
			Vire ();
		
		velocidade = new Vector2 (axis * MaxVelocidade, GetComponent<Rigidbody2D>().velocity.y);

		animator.SetFloat ("Velocidade", Mathf.Abs (axis));

		GetComponent<Rigidbody2D>().velocity = velocidade;

	}

	// Update is called once per frame
	void Update () {
		if (noChao && Input.GetButton ("Jump")) {
			GetComponent<Rigidbody2D>().AddForce (new Vector2 (0, 30));
		}
	}

	void Vire(){
		ladoDireito = !ladoDireito;

		Vector2 novoScale = new Vector2 (transform.localScale.x * -1, transform.localScale.y);

		transform.localScale = novoScale;
	}
}

Explicando o script:

  • Adicionamos 4 novas variáveis, sendo 2 delas públicas:
    • noChao: verifica se o personagem está em contato com o chão;
    • chaoCheckRaio: é o tamanho da esfera imaginária que será gerada ao redor do ChaoCheck. Essa esfera será tipo um Colisor mas diferente;
    • ChaoCheck: é a posição do ChaoCheck que criamos. Ela é publica para podermos atribuir ela no painel de Inspeção;
    • OQueEChao: são todas as Layers que consideramos chão. Também será atribuída através do editor.
  • No método FixedUpdate ficamos verificando se o Heroi está em contato com o chão. A funcão Physics2d.OverlapCircle é a que cria o círculo imaginário ao redor do ChaoCheck com tamanho de chaoCheckRaio e só retorna verdadeiro quando este círculo está em contato com as Layers OQueEChao.
  • No método Update verificamos se o personagem está no chão e se o botão de pulo foi pressionado. Se sim, adicionamos uma força no eixo Y de 30 unidades, a qual fará o personagem ser “jogado” para cima.

Volte para o Unity e selecione o objeto Heroi. Veja agora que no script apareceram as novas variáveis públicas que criamos. Selecione o ChaoCheck na variável ChaoCheck e selecione todas as layers menos a layer Jogador no campo O Que E Chao.

3 - script

Execute e veja o personagem pular quando você pressiona barra de espaço!

 

É isso aí, pessoal! Estamos quase no fim! Próximo tutorial vamos animar o pulo e vou dar algumas dicas de melhorias que podem ser feitas no seu jogo!

Abraços e até mais!

Filipe Leal

Bacharel em Ciência da Computação pela UDESC e certificado como Microsoft Specialist. Atualmente trabalha como programador na Basecorp Learning Systems. Reside em Edmonton - Canadá. Faixa preta com 1o. grau em Pa-kua, tem preferência por jogos de Ação/Aventura, RPG, Luta e Party Games. Seu jogo favorito é The Legend of Zelda - Ocarina of Time.

8 thoughts on “Tutorial: Jogo de Plataforma no Unity 5 – Parte 6 – Pulo

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *