我用Jump()
调用Input.GetAxisRaw("Vertical")
函数。但是这个函数被多次调用,字符跳跃高出3倍。我也习惯检查接地射线和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;
}
}
使重叠圆更小并调整顺序1)检查IsGrounded 2)然后跳转
而不是先跳,然后检查IsGrounded。