Я следил за учебником Unity по "Roll-A-Ball" и добавил несколько расширений. Теперь мяч может прыгать, но при каждом прыжке он прыгает слишком много раз; Я просто хочу мяч один раз, когда нажимаю на ПРОБЕЛ. Теперь я могу нажать на ПРОБЕЛ 3 раза, и он будет подпрыгивать все выше и выше.

  if (Input.GetKeyDown(KeyCode.Space))
        {
            Vector3 jump = new Vector3(0.0f, 150.0f, 0.0f);

            rb.AddForce(jump);
        } 

РЕДАКТИРОВАТЬ:

Попробовали немного изменить код, но теперь я могу прыгнуть ТОЛЬКО один раз (в первый раз)

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
      if (Input.GetKeyDown(KeyCode.Space) && jump.y <= 0.0f)
    {
        jump.Set(0.0f, 150f, 0.0f);
        rb.AddForce(jump);

     }
    }
3
ada dudu 7 Сен 2016 в 01:41

2 ответа

Я обнаружил, что лучшим решением является использование Raycast.

bool isOnGround = Physics.Raycast(transform.position, -Vector3.up, 1.875f);

Замените 1.875f расстоянием между исходной точкой вашего персонажа и землей, плюс немного больше. Затем вы можете проверить isOnGround при принятии решения, должен ли прыжок произойти или нет.

0
Aaron Franke 24 Фев 2017 в 01:17

Это может быть немного сложно выполнить (поскольку это не пошаговое руководство, а скорее схема).

Вы должны проверить, когда мяч достигает пола, проверяя, достигает ли скорость 0 или выше после первого нажатия. Как только это произойдет, установите для некоторого bool (здесь названного CanJump) значение true (или то, что ваш язык определяет для истины).

Есть еще несколько проверок, которые нужно сделать; как только CanJump имеет значение true (поскольку ваша скорость теперь равна >= 0), установите также переменную типа int с именем NumJumps в 0. И увеличивайте ее при каждом прыжке. Таким образом, вы можете установить для CanJump значение false после двух прыжков, что предотвратит прыжок мяча.

Обратите внимание, я ничего не знаю о Unity 3D, но у меня есть большой опыт работы с 3D-играми (такими как Unreal Engine 1 и, следовательно, моддинг UT99).

5
Gustavo6046 6 Сен 2016 в 22:51