我使用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;
}
}
答案 0 :(得分:0)
减小重叠圆并调整顺序 1)检查是否已接地 2)然后跳
而不是先跳转然后检查IsGrounded。