Заставьте персонажа прыгать в Unity2D

Теперь, когда наш персонаж движется слева направо, нам нужно сделать шаг вперед и заставить его прыгать.

Привязка действия Jump к кнопке

Нам нужно создать новую привязку в нашем PlayerInputController, эта привязка будет нашей привязкой Jump!
Мы будем создавать больше привязок на протяжении всего этого урока.

И нам нужно создать новую привязку для клавиатуры.

После создания не забудьте «Save Asset», иначе привязка не будет создана.

Код прыжка

Также как и speed нам понадобится новое свойство, которое будет указывать нам силу прыжка для нашего персонажа.

В Update() нам нужно указать скорость Y для тела нашего персонажа.

Проблемы

Наш персонаж может прыгать! УРА! Но он может прыгать, прыгать и прыгать до тех пор, пока мы продолжаем нажимать кнопку Jump, а мы этого не хотим.

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

Приземлен ли наш персонаж?

Давайте добавим новый игровой объект в качестве дочернего объекта нашего персонажа. Это будет наша «шашка для проверки земли».

После создания переместите его немного вниз по оси Y, -0,55 должно быть достаточно.

Еще пара вещей, которые нам нужно добавить в наш код:

  • Свойство, указывающее, заземлен игрок или нет.
  • Свойство игрового объекта, чтобы код знал, что является нашим объектом проверки заземления.

Давайте добавим их!

В редакторе мы перетащим игровой объект GroundCheck в наше свойство groundCheck в скрипте контроллера игрока.

Для маски слоя нам потребуется проделать некоторую дополнительную работу.

Создание маски слоя

Зайдите в инспектор (может быть объектом игрока), выберите Слои и Добавить слой....

В новом окне создайте новый слой под названием Ground.

Теперь у нас есть наш слой, давайте изменим наш слой наземного игрового объекта на ground.

И с этим вернитесь к нашему контроллеру ввода игрока и измените GroundLayer на Ground.

Персонаж игрока заземлен?

У нас есть все необходимое для того, чтобы заставить нашего игрока прыгать правильно!

Используя класс Physics2D из Unity, мы проверим, перекрывает ли наш groundCheck что-то, в данном случае землю!

Запустите игру и продолжайте нажимать на кнопку прыжка, мы не сможем прыгнуть больше одного раза!

ЭКСТРА!

Не очень хорошо обрабатывать физику (например, перемещение rigidbody) в методе Update, поэтому мы перенесем часть кода в код FixedUpdate(), а метод Update() оставим для обработки ввода данных игроком.

Некоторые дополнительные свойства:

И собственно код:

Спасибо

Спасибо за чтение! Надеюсь, эта серия статей будет полезной и увлекательной для вас, как и ее написание! Увидимся в следующей главе!

Оцените статью
devanswers.ru
Добавить комментарий