W tym kawałku kodu, który podałeś, używasz m. in. zmienne
x_move , speed
rb2d.velocity = new Vector3(x_move * speed ...);
jumpsleft , jumpMultipier
if(Input.GetKeyDown(KeyCode.Space) && jumpsleft > 0)
{
rb2d.AddForce(Vector3.up * jumpMultipier);
...
}
a nie masz zainicjowanych dla nich wartości "początkowych"
public float speed;
public float jumpMultipier;
private Rigidbody2D rb2d;
private float x_move;
private int jumpsleft;
private bool canJump;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
więc domyślnie "wszystkie" mają wartość 0 (zero - bo int i float)