Привет привет! Сегодня мы проделаем забавное небольшое упражнение, используя новую систему ввода Unity и немного сценариев. Мы заставим мяч немного подпрыгнуть, если будем удерживать клавишу менее секунды, а затем, если мы будем удерживать ее дольше секунды, он автоматически сильно подпрыгнет! У нас уже есть все необходимые инструменты, так что давайте приступим. Сначала мы настроим нашу сцену.

У нас есть наш мяч, сидящий на плоскости. Теперь мы переходим к нашим активам и создаем новый входной актив, карту действий для мяча и действие под названием «отскок», для которого требуется удерживать клавишу пробела в течение 1 секунды.

Как только это будет сделано, давайте превратим New Controls в сценарий C#. Мы создадим еще один скрипт, просто назовем его BallBounce и прикрепим его к сфере в сцене.

Все в порядке! Давайте начнем с нашего сценария BallBounce. Можете ли вы вспомнить все, что нам нужно настроить в первую очередь? Нам нужно получить ссылку на NewControls, создать экземпляр и включить карту действий. На этот раз мы собираемся сделать ДВА разных случая для нашего действия Bounce. Один, когда нажатие клавиши пробела было поднято до того, как прошла полная секунда (отменено), и одно, когда клавиша пробела была нажата и удерживалась в течение полной секунды (выполнено).

Прежде чем мы рассмотрим эти случаи, давайте добавим твердое тело к нашей сфере, поскольку Unity может изначально не добавлять этот компонент, а он нам понадобится.

Хорошо, сначала мы начнем с полного прыжка, и это будет исполняемый сценарий. Когда обнаружено полное нажатие на 1 секунду, мы хотим, чтобы к мячу была приложена сила, чтобы заставить его подпрыгнуть, а затем снова упасть. Итак, давайте применим AddForce к твердому телу.

Это выглядит здорово! Давайте перепрыгнем на нашу сцену и нажмем кнопку воспроизведения. Затем мы будем удерживать клавишу пробела в течение 1 секунды, чтобы посмотреть, как мяч взлетает вверх и падает обратно, как мы и запрограммировали. В этот момент нет частичного скачка. Мы сделаем это дальше.

Хорошо выглядеть! Время для частичного прыжка. Это будет наш отмененный сценарий, в котором ключ был поднят до того, как прошла 1 полная секунда. Как мы можем сделать меньший прыжок? Мы можем использовать продолжительность нажатия до 1 секунды как множитель для той же формулы прыжка. Итак, мы хотим создать переменную для нашего obj.duration (изменение obj на «контекст» также совершенно нормально). Мы также хотим убедиться, что этого не произойдет ПОСЛЕ полного прыжка, поэтому давайте удостоверимся, что если продолжительность превышает 1 секунду, мы устанавливаем obj.duration на 0. Мы могли бы легко добавить функцию двойного прыжка позже, изменив это.

Мы создали переменную для длительности, убедились, что она меньше единицы, а затем умножили ее на исходную формулу прыжка. Поскольку оно будет меньше единицы, оно будет дробным и сделает наши прыжки пропорциональными количеству проведенного времени. Давайте вернемся к нашей сцене и нажмем клавишу пробела пару раз в течение 1 секунды.

Идеальный! Вы можете увидеть ТРИ разных высоты прыжка с одним и тем же кодом, просто с разной продолжительностью удержания клавиши. Вы можете многое сделать с этим, и многие игры будут использовать эту функцию с чем-то вроде индикатора мощности, чтобы увидеть, насколько сильно вы ударите объект. Надеюсь, это было веселое упражнение, и скоро увидимся снова!