Resumo

Este artigo e vídeo aula, apresenta informações inerentes ao pulo de personagens usando a Unity. Para realizar o pulo do personagem, primeiro deve-se começar definindo alguns elementos do personagem, como o uso ou não de elementos físicos. Além disso, você pode querer controlar o quão alto o personagem irá pular, ou também querer controlar o pulo quando o usuário pressione um botão. Nesse sentido, esse artigo e vídeo aula irá te ajudar a realizar o pulo do personagem com elemento físico, e considerando o tempo que o jogador pressiona o botão, não ultrapassando os limites da força aplicada.

Como pular usando a física

O componente Rigidbody permite que um objeto se mova sob a simulação da física. Isso significa que objeto será afetado pela gravidade, e poderá movimentar-se usando forças físicas e quando o objeto usa um Collider, ele colidirá com outros objetos que também possuem um Collider associado. Então, para realizar o pulo do personagem usando o componente RigidBody, você poderá usar o método AddForce ou a propriedade Velocity. Entretanto, você também pode criar o seu próprio componente.

Antes de prosseguir,  você deve fazer o download da nova biblioteca de entrada da Unity e configurar algumas coisinhas. Então assista, esse vídeo:

Fazendo o personagem pular

Para fazer o personagem pular, preciso obter uma referência ao Rigidbody2D. Em seguida, para realizar o pulo do personagem, nós iremos utilizar a propriedade velocity.  A propriedade velocity irá receber um Vector.up multiplicado por uma Força. Onde Vector.Up é uma abreviação de (0,1), sendo este um vetor normal, onde o elemento 0 pertence ao eixo X e 1 ao eixo Y
A seguir um código padrão de pulo.

private void Jump()
{
    rigidBody2D.velocity = Vector2.up * jumpVelocity; // logo se sua força for igual a 3, a propriedade velocity irá receber, 0 em X e 3 em Y. 
}
 

Entretanto, esse tipo de pulo pode produzir um efeito flutuante. E dependendo do jogo, essa aplicação não é suficiente. Então, você pode utilizar a gravidade da classe Physics, ou simplesmente utilizar a propriedade gravityScale do próprio componente.

A partir dessa ideia, podemos adicionar o próximo método que irá permitir aplicar o pulo conforme o tempo que o usuário irá pressionar o botão e uma queda mais rápida.

private void FixedUpdate()
{

 if (rigidBody2D.velocity.y < 0)
 {
  rigidBody2D.gravityScale = fallMultiplie;
 }
 else if (rigidBody2D.velocity.y > 0 && !managerInput.IsDown())
 {
  rigidBody2D.gravityScale = multiple;
 }
 else
 {
  rigidBody2D.gravityScale = 1f;
 }

}

O Vídeo a seguir apresenta a implementação completa.

Importante ressaltar que essa aplicação para o pulo não é única, existe muitas maneiras de fazer o pulo. Procure aquela que se encaixe ao seu jogo.

Agora, se você não compreendeu muito sobre o movimento do personagem no plano. Veja esse artigo:
Como movimentar Personagem | Unity