Estou fazendo um clone de pássaro voador para praticar e, ao fazer o recurso de salto, estou tendo problemas porque no começo o salto funciona, mas então a gravidade fica tão forte que, mesmo se eu ainda estiver me movendo para cima, pular se torna cada vez mais difícil (mesmo em 0,25 ou adicionando uma força de 5k na coordenada y)
pesquisei algumas soluções e descobri que desligar a gravidade quando o botão de pular é pressionado, mas não acho que funcione bem para RigidBody2D e outra solução que tentei é aumentar a força ascendente, mas isso só funciona como uma solução de curto prazo, não sei onde colocar o código, então estou colocando aqui
using UnityEngine;
public class PlayerJump : MonoBehaviour
{
public Rigidbody2D rb;
public float jump = 10f;
public float Flyspeed = 10f;
// Update is called once per frame
void start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
rb.AddForce(new Vector2(Flyspeed * Time.deltaTime, 0));
if (Input.GetKeyDown("w"))
{
rb.AddForce(new Vector2(0, jump * Time.deltaTime));
rb.useGravity = false;
}
else
rb.useGravity = true;
}
}
Em vez de usar forças, você pode alterar a velocidade do corpo rígido assim:
Isso garante uma abordagem mais direta, sem a necessidade de usar uma solução baseada em tempo.
Além disso, corrigi um erro de digitação no
Start()
método — sua função original foi escrita como ,start()
o que impediu o Unity de detectar automaticamente seu Rigidbody2D.