Jump()被多次调用

时间:2019-03-24 10:48:09

标签: c# unity3d

我使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

减小重叠圆并调整顺序 1)检查是否已接地 2)然后跳

而不是先跳转然后检查IsGrounded。