1
resposta

Personagem parou de pular

Não sem bem em que ponto isso aconteceu, mas depois de adicionar as sprites e criar as animações idle e walk, a personagem parou de pular. O método HandleJump é invocado ao pressionar espaço, pois um Debug.Log colocado nele printa corretamente, mas o movimento não acontece. Não estou esperando que alguma animação aconteça, o que quero dizer é que não há nenhum movimento vertical. Aqui está o método, printando texto e se a personagem está no chão ou não (jumpForce está como 3):

    private void HandleJump()
    {
        bool isGrounded = isGroundedChecker.IsGrounded();
        UnityEngine.Debug.Log("HandleJump");
        UnityEngine.Debug.Log(isGrounded);
        if (!isGrounded) { return; }
        rigidBody.velocity += Vector2.up * jumpForce;
    }

E o print quando aperto espaço: print do console da Unity mostrando que o método foi chamado e que a personagem está no chão.

1 resposta

Olá Mariana!

Parece que o problema pode estar relacionado ao uso do rigidBody.velocity += Vector2.up * jumpForce;. Esse método adiciona à velocidade atual, mas se houver alguma outra lógica que redefine a velocidade do personagem a cada frame, isso pode estar impedindo o movimento vertical.

Aqui estão algumas coisas para verificar:

  1. Confirme a Configuração do Rigidbody2D: Verifique se o componente Rigidbody2D do seu personagem está configurado corretamente. Certifique-se de que a gravidade está aplicada e que o modo de simulação está definido como "Dynamic".

  2. Verifique Outros Scripts: Veja se há outros scripts que possam estar alterando a velocity do Rigidbody2D a cada frame, especialmente no método Update ou FixedUpdate.

  3. Força do Pulo: Experimente aumentar o valor de jumpForce para ver se há alguma diferença. Às vezes, um valor muito baixo pode não ser suficiente para perceber o movimento.

  4. Camadas de Colisão: Certifique-se de que o isGroundedChecker está funcionando corretamente e que o personagem está realmente detectando o chão. Verifique as camadas de colisão para garantir que estão configuradas corretamente.

  5. Debugging Adicional: Adicione mais Debug.Log para verificar o valor da velocity antes e depois de aplicar a força do pulo.

Aqui está um exemplo de como você pode modificar o código para verificar a velocity:

private void HandleJump()
{
    bool isGrounded = isGroundedChecker.IsGrounded();
    UnityEngine.Debug.Log("HandleJump");
    UnityEngine.Debug.Log("Is Grounded: " + isGrounded);
    UnityEngine.Debug.Log("Velocity Before: " + rigidBody.velocity);
    
    if (!isGrounded) { return; }

    rigidBody.velocity += Vector2.up * jumpForce;
    UnityEngine.Debug.Log("Velocity After: " + rigidBody.velocity);
}

Espero que essas dicas ajudem a resolver o problema. Bons estudos!