unity3d 在Unity中,如何在击中对象时禁用跳跃?

pgpifvop  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在创建一个2D的Jump & Run游戏,我想在关卡中的一个部分禁用跳跃。我不知道如何才能做到这一点。这是我的跳跃代码:

private void Update()
{
    if (Input.GetButtonDown("Jump") && IsGrounded())
    {
        characterRb.velocity = new Vector2(characterRb.velocity.x, jumpForce);
    }
        
    if (Input.GetButtonUp("Jump") && characterRb.velocity.y > 0f)
    {
        characterRb.velocity = new Vector2(characterRb.velocity.x, characterRb.velocity.y * 0.5f);
    }
}

private bool IsGrounded()
{
    return Physics2D.OverlapCircle(groundCheck.position, 0.2f, groundLayer);
}

我想我会使用OnTriggerEnter2D方法来命中对象,并在update方法的if语句中包含另一个布尔值,但这听起来不是很干净。
希望有人能帮帮我:)
亲切的问候

icnyk63a

icnyk63a1#

我想。当角色跳跃并与一个物体互动时,是否禁用跳跃?不管怎样
添加bool和Collider2D内容
例如:

public bool canJump = true;
    
    private void OnTriggerEnter2D(Collider2D other) {
        if (other.gameObject.CompareTag("ground")) {
            canJump = false;
        }
    }

    private void OnTriggerExit2D(Collider2D other) {
        if (other.gameObject.CompareTag("ground")) {
            canJump = true;
        }
    }
}

也可以添加if (Input.GetButtonDown("Jump") && IsGrounded())替换为这个if (Input.GetButtonDown("Jump") && IsGrounded() && canJump)
如果你愿意的话,可以看看Collider和bool之类的东西的文档
https://docs.unity3d.com/ScriptReference/Object-operator_Object.htmlhttps://docs.unity3d.com/ScriptReference/Collider.html

相关问题