Продолжение первой статьи в которой знакомлю моих читателей с созданием игр, что это не особо сложно и дорого в современных реалиях. Правда если не замахиваться на игры AAA класса.
И так в первой статье я познакомил вас с конструктором игр GDevelop 5, а также с добавлением окружающей среды в игру. В этой статье будем добавлять игрока и учить его взаимодействию с окружением игры. Ну и моё любимое...
Поехали! (с) Гагарин Ю.А.
Добавление игрока (героя) в игру
Открываем наш предыдущий проект и выглядит он всё с той же первой статьи, примерно так, как показано на скриншоте ниже.
Что нам нужно чтобы добавить игрока? Это же конечно спрайты, либо нарисованные вами самими, либо как делаю я в данном цикле статей, использую уже готовые из магазина ассетов. В нашей игре будет два состояния игрока, когда стоит (idle, то есть не под управлением) и ходьба (walk, когда нажаты кнопки для управления).
Идём далее, нажимаешь на "Add a new object" и выбираем из "Sprite". Данный вид используется для создания анимированных объектов таких как: игроки, враги, предметы, платформы. Объект "Sprite" состоит из анимации, и каждая анимация может содержать одно или несколько изображений.
Задаём имя нашему игроку, в данном случае пускай будет "hero". Давайте добавим анимацию нашему персонажу кнопкой "Add an animation".
Анимация добавлена, но всё ещё пустая. Поэтому нажимаем на кнопку "Add" (добавить) со значком плюс и в диалоговом окне находим скачанного нашего персонажа. Если вы используете ссылки из урока, то нам нужна папка с именем "Idle".
Можно дать название вашей анимации, для простоты я также назвал её "Idle"
Чтобы не добавлять по одной картинке в окне выбора нажимаем комбинацию клавиш "Ctrl+A" (выделить всё) и нажимаем на кнопку "Открыть". Появится диалог, спрашивающий, что вы хотите добавить несколько файлов анимации. Соглашаемся на кнопку "OK" и видим вот такой вот результат, где активируем параметр "Loop" (повтор).
Далее нам нужно отредактировать маску коллизий (установить точки столкновений в игре для персонажа), нажимаем на кнопку "Edit hitboxes" и переходим в редактор маски. Сделаем масштабирование чтобы полностью видеть нашего героя, используя кнопку лупы со знаком минус.
На втором слайде выше красным выделена область, на которой будет происходит столкновение персонажа в игре. Естественно нас такое не устраивает. Поэтому нажимаем на кнопку "Use a custom collision mask" (своя маска столкновений) и далее нажимаем на кнопку с плюсом.
И что мы видим, в окне просмотра появились красные точки (установки углов столкновений), давайте их расставим по нашему персонажу (обведём его), просто перетаскивая мышью точки в нужные нам позиции.
После всех манипуляций, если результат вас устраивает, закрываем окно на кнопку "Close" и в следующем диалоге кнопка "Apply". В списке объектов игры (панель "Objects") появился наш персонаж. Добавим его в уровень, всё тем же перетаскиванием как дела с тайлами окружения. Применим масштабирование и поставим в любое удобное для вас место на уровне (ну как правило откуда начинается игра).
Если у вас при перемещении персонажа (да и других объектов в игре) они ставятся по сетке, и нужно более точно положение. В окне редактора уровня при перемещении персонажа мышью зажмите клавишу ALT на клавиатуре)
Чтобы увидеть результат проделанной работы нажмём кнопку запуска предварительного просмотра (значок "play" на панели инструментов) и получим примерно вот такой вот результат.
Управление персонажем в игре
В данной части статьи (урока) научим нам персонаж ходить ну и вообще как-то взаимодействовать с игровым миром. Что нам для этого понадобится спросите вы? Показываю.
В окне "Objects" конструктора игр, делаем двойной клик на нашем персонаже или ПКМ (правая кнопка мыши) и выбирает в меню пункт "Edit object" (редактировать объект). Далее в открывшемся окне выбираем вкладку "Behaviors" (поведения) и в нём нажимаем кнопку "Add a behavior to the object" (добавить поведение объекту). Появится окно со списком различного рода уже готовых поведений (действий) для присвоения нашему герою. Нам нужен пункт "Platformer Character", его и выбираем.
Platformer Character - уже готовое поведение игрока классического платформера.
Здесь мы видим много разных параметров, но пока их не трогаем, а нажимаем на кнопку "Apply".
Чтобы было более наглядно, покажу как выглядит добавление действий в анимации, ниже.
Однако не спешите запускать игру, потому что произойдёт вот это...
Почему такое происходит? А потому, что в прошлом уроке я как-то упустил момент, что надо было бы сразу добавить поведение (behavior) нашим платформам. Поэтому исправляем это недоразумение.
Делаем двойной клик на наших тайлах (у меня tile1, tile2) по очереди, но только в окне поведений выбираем свойство "Platform", то есть уже готовой платформы. Дабы не раскидывать это по картинкам, покажу в анимации.
Теперь чтобы удостоверится, запустим вот предварительный просмотр игры ещё раз. И увидим результат (даже можем чуток поиграть уже)
Как видим наш персонаж теперь не проваливается сквозь пол, даже можем им управлять (стрелки на клавиатуре влево (вправо) - передвижение, пробел - прыжок)
Результат хоть и хорош, но всё же как видим не до конца, не хватает анимации при ходьбе. Сказано, сделано...
Двойной клик мышью на объекте "Hero" в менеджере и нажимаем "Add an animation", то есть добавляем ещё одну анимацию. Назовём её "Walk" и по нажатии кнопки "Add" та что с плюсом в проводнике перейдём в папку.
Но и это ещё не всё, чтобы анимация работала как надо, нам понадобится использоваться события (events) в игре.
Игровые события (events)
В главном окне конструктора переходим на вкладу "NewScene (Events)".
В данной вкладке, пока что нет никаких игровых событий, о чём нам и сообщается.
Поэтому добавим наше первое события воспользовавшись кнопкой "Add a new empty event" (добавить пустое событие) на панели инструментов.
Что приведёт нас вот к такому результату
Перед собой мы видим поле (таблицу) разделённое на две части. Слева поле - условия, которое в данный момент пустое (где написано, add condition) и правая сторона поле - действия, также пустое.
Как происходит создание логики для игры в данном конструкторе. В поле условие, добавляем новое условие для объекта, в нашем случае это будет движение персонажа, а в поле действие, добавляется результат, который должен сработать при сопутствующем условии (то есть передвижении игрока). Начнём...
Нажимаем по надписи "Add condition" и в появившемся окне поле поиска вводим (чтобы не искать руками) такой текст "is on floor" (если объект находится на земле).
Среди найденного его и выбираем
С правой стороны в выпадающем списке выбираем нашего персонажа и нажимаем кнопку "Ок".
Так, условие нахождения нашего героя на земле добавили, теперь нам надо добавить проверку передвижения. Для нашего условия создадим дочерние элементы, выберем его и на панели инструментов нажмём кнопку "Add a sub-event to the selected event" (добавить дочернее событие к выбранному элементу).
В только что созданном дочернем элементе, нажимаем "Add condition" и находим условие "is moving" (если двигается). Выбираем в выпадающем списке "Object" (справа) нашего героя и нажимаем кнопку "Ok".
Добавляем ещё один дочерний элемент с условием передвижения, но только активируем параметр "Invert Condition" (второй слайд)
В итоге, должно получится вот так.
Чтобы мы сделали. Добавили проверку на движение и если движение прекратилось (где включили инверсию).
Продолжение следует... Дзен отказывается больше принимать столько картинок и анимации в одну статью.
Ставьте оценки.
Пишите комментарии.
Подписывайтесь
Спасибо за внимание!