如何同时检查两个bool Unity,C#

时间:2018-10-30 23:15:45

标签: c# unity3d game-development

我有一个可以跳下并蹲下的角色:

    if ((Input.GetButtonDown("Jump")))
    {
        jump = true;
        animator.SetBool("IsJumping", true);
    }
    if (Input.GetButtonDown("Crouch"))
    {  
        crouch = true;
        runSpeed = 0f;

    }else if (Input.GetButtonUp("Crouch"))
    {
        crouch = false;
        runSpeed = 20f;
    }

我的角色的匹配箱很大,当他蹲下时,匹配箱要小得多。 我的问题:当角色蹲下时跳跃时,击打盒会在空中飞行时变小,我想通过检查跳跃为真并且用户按下按钮“ crouch”来避免角色蹲下来避免这种情况。 但是因为我的ifs在Update方法内部,所以我无法使用,因为我创建了一个无限循环。我尝试使用像这样的双重检查:

if jump and crouch then no crouch

if no jump and crouch then crouch

但这也不起作用。我的想法是使用while循环,但我不能这样做,我如何才能创建可以在我的跳跃为真时检查的东西,那么我就不能蹲下。 (我有一个可以进行地面检查的功能,因此一旦角色撞到地板,我的跳动就会变为假)

谢谢

更新-这不是&&&的情况,谢谢

1 个答案:

答案 0 :(得分:2)

if ((Input.GetButtonDown("Jump")))
    {
        jump = true;

        animator.SetBool("IsJumping", true);
    }
    if (Input.GetButtonDown("Crouch"))
    {  
         if(!animator.GetBool("IsJumping")){
        crouch = true;
        runSpeed = 0f;
        }

    }else if (Input.GetButtonUp("Crouch"))
    {
        crouch = false;
        runSpeed = 20f;
    }

请特别注意

        if(!animator.GetBool("IsJumping")){
        crouch = true;
        runSpeed = 0f;
        }

在中间语句中