Jump()被多次调用

问题描述 投票:1回答:1

我用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;
    }
}
c# unity3d
1个回答
0
投票

使重叠圆更小并调整顺序1)检查IsGrounded 2)然后跳转

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

© www.soinside.com 2019 - 2024. All rights reserved.