Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Animação Atrasada

Estou usando outros assets, mas mesmo configurando a animação em si de pulo corretamente, ela sempre dispara após o personagem já estar no ar, mas com a animação de pulo começa com "impulso", fica sempre atrasada, não importa o quanto eu configure, fiquei imaginando se alterando o parâmetro da animação de bool pra trigger pudesse resolver, mas estou com dificuldade em realizar isso, seria o suficiente para resolver o problema? Se sim, como posso fazer?

2 respostas

Oi Gabriel! Tudo bem?

Alterar o parâmetro da animação de bool para trigger pode, sim, ajudar a resolver esse problema, pois trigger é mais adequado para eventos que ocorrem instantaneamente, como o início de um pulo.

Para fazer essa alteração, você pode seguir os seguintes passos:

  1. Abra o Animator: Vá até a aba Animator na Unity, onde você configurou suas animações.

  2. Crie um Trigger: No painel de parâmetros, clique no ícone de "+" e selecione "Trigger". Nomeie este trigger como "Jump".

  3. Configure a Transição: Clique na transição que vai de "Idle" ou "Walk" para "Jump". No painel de condições da transição, remova a condição isJumping e adicione a condição do trigger "Jump".

  4. Ajuste o Script: No script que controla as animações (provavelmente o "PlayerAnim"), você precisará alterar a lógica que define isJumping para usar o trigger. Em vez de animator.SetBool("isJumping", true);, use animator.SetTrigger("Jump");.

  5. Teste o Jogo: Com essas mudanças, teste o jogo para ver se a animação de pulo está sincronizando melhor com o movimento do personagem.

Essas alterações devem ajudar a disparar a animação de pulo no momento exato em que o personagem inicia o salto.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Eu acabei conseguindo, fazendo mais ou menos isso. O que resolveu pra mim, além de alterar o parâmetro de bool para trigger, foi separar a animação em duas. Uma parte tem apenas o personagem dando o salto e a outra animação tem ele caindo, e para o método segui esta lógica:

public void HandleAnimationJumping()
// Método criado para ativar as animações de pulo e queda do personagem.
{

    animator.SetBool("isJumping", !GroundedChecker.IsGrounded());
    /* Dá o valor verdadeiro ou falso ao verificador dentro do animator para ativar ou desativar a animação de 
       salto */

    if (personagem.linearVelocity.y < 0f && GroundedChecker.IsGrounded() == false)
    // Se o valor Y do meu personagem for menor que 0, ou seja, se o Y parou de subir e agora está decendo:
    {

        animator.SetBool("isFalling", isFalling);
        // Ativa a animação caindo, dando o valor isFalling, que é verdadeiro.

    }
    else
    // Se o valor de Y não for menor que 0, ou seja, se meu personagem ainda está subindo ou está parado no ar:
    {

        animator.SetBool("isFalling", isNotFalling);
        // Não ativa a animação caindo, dando o valor isNotFalling, que é falso.

    }


}

Desse jeito o pulo fica bem natural, além do personagem sempre reagir ao cair de uma plataforma, por exemplo.

Muito obrigado!