Как я могу предотвратить это от зацикливания? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть кнопка, которую я нажимаю, чтобы прыгать.Моя проблема сейчас заключается в том, что когда я нажимаю эту кнопку, мой игрок продолжает прыгать вечно.Но я хочу сделать так, чтобы мне приходилось снова нажимать кнопку прыжка, как только я упал на землю.Это мой текущий код:

  public void onButtonJump()
    {
         if (controller.isGrounded )
        {

            verticalVelocity = -gravity * Time.deltaTime;

            {

                verticalVelocity = jumpForce;
                animator.SetBool("is_in_air", true);
                jump.Play();


            }

        }
        else
        {
            animator.SetBool("is_in_air", false);
            verticalVelocity -= gravity * Time.deltaTime;
        }
    }

Как мне предотвратить его зацикливание и сделать так, чтобы мне снова пришлось нажимать кнопку после заземления?

1 Ответ

0 голосов
/ 23 февраля 2019

Не делайте «гравитацию» под кнопкой, делайте это только в FixedUpdate (обновление «Физика»):

void FixedUpdate() {
    if ( controller.isGrounded )
        verticalVelocity = 0;
    else
        verticalVelocity -= gravity * Time.deltaTime;

    // Apply velocity to transform here
}

void onButtonJump() {
    if (controller.isGrounded ) {
        verticalVelocity = jumpVelocity;
        // Play animation and sound here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...