Finalizar Animação do Jogador
Animação de Pulo
Para o pulo, teremos duas animações: como o jogador irá pular e depois cair, precisamos criar duas animações para isso. A transição entre elas será baseada na "velocidade y" do jogador; se y for positivo, ele está pulando, e se y for negativo, ele está caindo. Podemos obter a velocidade y a partir do componente Rigidbody2D anexado ao jogador.
animator.SetFloat("JumpingForce", rb.velocity.y);
Este código atribui o valor para o parâmetro de transição entre o pulo e a queda.
Explicação do Código
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
animator.SetBool("isJumping", true);
}
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
animator.SetBool("isJumping", false);
}
animator.SetFloat("JumpingForce", rb.velocity.y);
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
// Code to execute when the conditions are met
}
Esta linha verifica se a tecla Espaço foi pressionada (Input.GetKeyDown(KeyCode.Space)
), se o jogador está no chão (isGrounded
) e se o jogador não está atacando no momento (animator.GetBool("isAttacking") == false
). Se todas as condições forem atendidas, o bloco de código a seguir será executado.
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
Esta linha adiciona uma força para cima ao componente Rigidbody (rb
) anexado ao jogador, simulando um salto. A força aplicada está na direção para cima (Vector2.up
) com magnitude definida por jumpForce
, e é aplicada de forma impulsiva (ForceMode2D.Impulse
).
animator.SetBool("isJumping", true);
Esta linha define o parâmetro booleano "isJumping" no componente Animator como verdadeiro, acionando a animação de salto.
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
// Code to execute when the conditions are met
}
Esta linha verifica se o jogador está atualmente pulando (animator.GetBool("isJumping") == true
), se a velocidade vertical do jogador é negativa (rb.velocity.y < 0
) e se o jogador está no chão (isGrounded
). Se todas as condições forem atendidas, o bloco de código a seguir será executado.
animator.SetBool("isJumping", false);
Esta linha define o parâmetro booleano "isJumping" no componente Animator como falso, indicando que o jogador terminou de pular e cair, e mudará sua animação para idle.
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
Esta linha lança um raio para baixo a partir da posição dos pés do jogador (playerFeet.position
) para detectar se o jogador está no chão. Retorna verdadeiro se o raio intersectar qualquer colisor na camada ground dentro de uma distância de 0.1 unidades, atualizando a variável isGrounded
conforme o resultado.
Obrigado pelo seu feedback!