Как проверить на два bool одновременно Unity, C # - PullRequest
0 голосов
/ 31 октября 2018

У меня есть персонаж, который может прыгать, а также приседать с этим:

    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;
    }

У моего персонажа довольно большой хитбокс, и когда он приседает, хитбокс становится значительно меньше. Моя проблема: в то время как персонаж прыгает, если он приседает, хитбокс становится меньше, пока он находится в воздухе, я хочу избежать этого, проверив, что пока прыжок истинен и пользователь нажимает кнопку «приседать», персонаж не приседает , Но так как мои if находятся внутри метода Update, я не могу использовать while, потому что я создаю бесконечный цикл. Я попытался использовать двойную проверку, например:

if jump and crouch then no crouch

if no jump and crouch then crouch

Но это тоже не работает. Моя идея состояла в том, чтобы использовать циклы while, но я не могу так, как я могу создать что-то, что может проверить, что пока мой прыжок верен, я не могу присесть. (У меня есть функция, которая проверяет грунт, поэтому мой прыжок станет ложным, как только персонаж упадет на пол)

спасибо

обновление - это не случай & или &&, спасибо

1 Ответ

0 голосов
/ 31 октября 2018
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;
        }

в середине утверждения

...