Я вызываю функцию Jump()
, используя Input.GetAxisRaw("Vertical")
.Но эта функция вызывается несколько раз, и персонаж прыгает в 3 раза выше.Я также имел обыкновение проверять, заземлен ли raycast и OnCollisionEnter2D
, но все еще была такая проблема.
void Update()
{
int yMovement = (int)Input.GetAxisRaw("Vertical");
if (yMovement == 1)
{
Jump();
}
isGrounded = Physics2D.OverlapArea(new Vector2(transform.position.x - 0.5f, transform.position.y - 0.5f), new Vector2(transform.position.x + 0.5f, transform.position.y - 0.51f), groundLayer);
}
void Jump()
{
if (!isGrounded)
{
return;
}
else
{
print("jump");
transform.localScale = new Vector2(1, 1);
r.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
isGrounded = false;
}
}