Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Finalizar Animação do Jogador | Sistema de Animação do Unity
Jogo de Luta no Unity

bookFinalizar 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.

question mark

O que representa um raycast no Unity?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookFinalizar 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.

question mark

O que representa um raycast no Unity?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6
some-alt