Учебник по визуальному скриптингу (Логические кирпичики)
Первые шаги: Создание логики прыжка для игрока
Lesson 2 of 10 • 20 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
В этом уроке мы начнем создавать базовую логику движения для нашего Player.
Используя только Logic Bricks Cave Engine, мы реализуем простую механику прыжка через визуальную логику. Это также поможет вам понять одну из самых важных идей, стоящих за Logic Bricks: как события, условия и действия работают вместе для управления поведением игрового процесса.
В данном случае логика будет очень простой:
- Проверьте, нажал ли игрок кнопку прыжка.
- Проверьте, разрешен ли игроку прыжок.
- Если все верно, вызовите функцию прыжка из Component Character игрока.
Это хороший первый пример, потому что прыжок — это очень распространенная механика игрового процесса, но он также вводит основную структуру, которую вы будете использовать много раз при создании игр с помощью Logic Bricks.
1. Добавление прыжка
Чтобы начать создавать логику движения игрока, нам сначала нужно получить Events игры.
Объект Events дает вам доступ к информации, связанной с вводом, такой как клавиши клавиатуры, кнопки мыши и другие проверки событий, которые происходят во время игры.
В области редактирования Logic Bricks щелкните правой кнопкой мыши, чтобы открыть меню поиска узлов.
Чтобы быстро найти узел, используйте поле поиска, обозначенное значком лупы, и введите название узла, который вы хотите.
Узлы Entity, Scene и Events используются очень часто, поэтому они уже выделены в верхней части окна поиска. Из-за этого вам обычно не нужно искать их по имени вручную.
Выберите Get Events, чтобы добавить узел событий в вашу логику.

Теперь добавьте узел Pressed.
Этот узел будет отвечать за проверку, нажата ли конкретная клавиша игроком.
Другими словами, это условие сообщит нашей логике: "игрок хочет прыгнуть сейчас".

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

После настройки клавиши прыжка нам нужно проверить, была ли эта клавиша действительно нажата игроком.
Для этого мы будем использовать узел If (Bool).
Узел If (Bool) получает логическое значение, что означает значение, которое может быть либо True, либо False. Если условие истинно, логика продолжается через вывод True. Если условие ложно, она продолжается через вывод False.
В данном случае условием будет то, нажата ли клавиша Space или нет.

Теперь, так же как мы добавили узел Events, нам также нужно получить нашу текущую Entity.
Это важно, потому что действие прыжка не принадлежит объекту Events. Объект Events только говорит нам, была ли нажата клавиша. Фактическое поведение прыжка принадлежит Entity игрока, более конкретно — его Character Component.
Чрез узел Entity мы сможем получить доступ к компонентам, прикрепленным к игроку.

Из Output Character Component перетащите соединение и найдите Jump.
Этот узел будет отвечать за выполнение прыжка персонажа, когда условие будет выполнено.
Таким образом, на этом этапе мы по сути говорим:
"Когда игрок нажимает клавишу прыжка, получите Character Component игрока и вызовите его функцию Jump."

Это будет основной поток логики прыжка:
Entity → Character Component → Jump
С этим потоком мы получаем доступ к компоненту персонажа из Entity, а затем используем его функцию прыжка.

Теперь соедините выход True узла If (Bool) с входом Flow узла Jump.
Это означает, что когда клавиша Space нажата, условие будет истинным, и игрок выполнит прыжок.
Если клавиша не нажата, условие будет ложным, и ничего не произойдет.

Тем не менее, чтобы эта логика действительно сработала, ее нужно подключить к событию Flow.
Logic Bricks не выполняются случайно. Им нужна точка входа, которая представляет собой узел, начинающий поток выполнения.
Узел On Start выполняется только один раз, когда Entity стартует. Это полезно для инициализации логики, такой как установка переменных, подготовка ссылок или конфигурация чего-либо в начале игры.
Узел On Update выполняется каждый кадр. Это полезно для логики игрового процесса, которую нужно постоянно проверять, такой как движение, ввод, управление камерой или что-либо, что может изменяться во время работы игры.
Поскольку нам нужно постоянно проверять, нажата ли клавиша прыжка, мы подключим нашу логику к On Update.
Это гарантирует, что проверка клавиши прыжка происходит постоянно во время игрового процесса.

С этой логикой персонаж уже должен быть в состоянии прыгать.
Чтобы держать ваши Logic Bricks организованными, вы можете выбрать все узлы, использованные для создания этой функции, щелкнув и перетащив правой кнопкой мыши или выбрав их индивидуально, удерживая Shift.
После выбора узлов нажмите C, чтобы создать комментарий.
Это очень полезная практика организации. По мере роста вашей логики комментарии помогут вам визуально разделить разные части поведения, такие как прыжок, движение, камера, атаки, взаимодействия и так далее.
Даже если логика сейчас проста, привыкание к организации своих узлов на раннем этапе сделает ваш проект намного легче для понимания позже.


2. Добавление проверки на землю
На этом этапе вы, вероятно, заметили небольшую проблему: если мы продолжим нажимать клавишу Space, персонаж может продолжать прыгать повторно.
Это происходит потому, что наша логика все еще не проверяет, разрешено ли персонажу прыгать в данный момент. Она только проверяет, была ли нажата клавиша прыжка, а затем сразу вызывает функцию прыжка.
В большинстве игр мы не хотим, чтобы игрок прыгал бесконечно в воздухе. Обычно игрок должен иметь возможность прыгнуть только при касании земли.
К счастью, решить эту проблему в Cave очень просто.
Для этого мы будем использовать узел On Ground.
Узел On Ground возвращает логическое значение, указывающее, касается ли персонаж сейчас земли или нет.
Теперь вместо проверки только одного условия мы проверим два условия:
- Нажата ли клавиша прыжка?
- Находится ли персонаж на земле?
Только когда оба условия истинны, узел Jump должен быть выполнен.
Логика становится:
- Сначала проверьте, была ли нажата клавиша Space.
- Если это верно, проверьте, находится ли игрок на земле.
- Если игрок на земле, выполните Jump.
- Если игрок не на земле, ничего не делайте.
Это предотвращает бесконечные прыжки персонажа, находящегося уже в воздухе.

С добавленной проверкой на землю логика прыжка становится намного более корректной для базового контроллера игрока.
Теперь игрок будет прыгать только тогда, когда нажата клавиша прыжка, и Character Component сообщает, что игрок сейчас находится на земле. Это основная структура, которую вы будете использовать для многих действий игрового процесса в Cave: сначала проверяйте ввод, затем проверяйте, разрешено ли действие, и только затем выполняйте действие.