Como criar pulo do personagem usando a Unity
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