Не секрет, что многие начинают изучать Construct с уроков, где создают платформы, бегущего по ним персонажа, а потом действия все нарастают и нарастают... и постепенно изучение доходит до босса.
А если знакомство произошло даже не с платформера, то в других жанрах тоже есть боссы, у которых есть полоска жизней.
Когда я начинала изучать механику игр, то с жизнями боссов у меня не особо сложилось. То система не работала, то версии движка разные, если хочу посмотреть исходник, то еще что.
Используются три распространенных метода добавления жизней/XP в игру:
- линейная XP вверху или над боссом/персонажем, которая у меня постоянно работает косячно почему-то, убывая откуда-то с середины, а не с конца (изменяется длина спрайта)
- жизни в виде цифр (используется глобальная переменная)
- жизни в виде сердечек (глобальная переменная + несколько спрайтов, отдельных на каждый объект)
Со временем, когда у меня стало больше опыта, больше обзора, я нашла легкий способ для создания жизней. Больше всего мне нравится вариант в виде сердечек, и я знаю, как реализовать это гибко, без переменных и дополнительных спрайтов, занимающих место.
Этот способ не совсем из сферы игр, он скорее применяется для создания галереи и листания картинок в программах. Ну, я его узнала, когда пыталась создать paint на C2.
По итогу, уменьшение жизней у босса будет выглядеть так (вместо мыши можно будет настроить другую систему):
Механика системы
Теперь о самой системе изнутри. Построено все на анимации, конечно же.
Рисование анимации
Для начала следует нарисовать спрайт, в котором будет нужное количество сердец. Если вы не особо заинтересованы в графике, просто воспользуйтесь моим шаблоном, он в формате png на прозрачном фоне.
Теперь я открываю движок Construct 2 и загружаю картинку как спрайт.
Загрузка спрайта - путь: нажимаю один раз правой клавишей и выбираю Insert new object --> в появившемся окне выбираю Sprite и нажимаю кнопку Insert -->
--> нажимаю на холст, чтобы проявить спрайт --> нажимаю на иконку папки вверху редактора и загружаю шаблон -->
После этого я дублирую картинку и убираю на ней с конца половинку сердечка или сразу целое, в зависимости от того, как вам будет удобно. Я буду убирать целое.
Дублирование кадров - путь: в редакторе картинок в левом окошке Animation frames нажимаю на нулевой кадр правой кнопкой мыши и выбираю Duplicate --> повторяю действие до шести кадров, учитывая нулевой -->
--> после этого я выбираю в редакторе Eraser, ставлю размер на 60 -->
--> теперь я нажимаю на каждый кадр и убираю по нарисованному сердечку. На нулевом кадре все пять сердечек, на 1 кадре уже четыре и так далее, а кадр под цифрой 5 будет пустым -->
--> в правом окошке Animations нажимаю на Default и в левом основном меню выставляю скорость анимации 0 -->
--> закрываю редактор изображений без сохранения
Таким образом, у меня получилось небольшое количество кадров.
Важно поставить скорость анимации на ноль, чтобы она не вставала при запуске сразу на последний кадр.
Таким же образом я добавлю обычный черный спрайт, который будет позже уничтожаться, если жизней будет 0.
Добавление черного спрайта - путь: нажимаю один раз правой клавишей и выбираю Insert new object --> в появившемся окне выбираю Sprite и нажимаю кнопку Insert --> нажимаю на холст, чтобы проявить спрайт --> закрашиваю спрайт черным цветом и закрываю редактор изображений
Механика
Перехожу к настройке механики.
Типичным действием в игре является такая система, как: игрок генерирует пулю - пуля касается врага - у врага отнимается жизнь. Система элементарная, поэтому я не буду на ней останавливаться и для действия возьму клик мыши.
Добавление мыши в проект - путь: нажимаю один раз правой клавишей и выбираю Insert new object --> в появившемся окне выбираю Mouse и нажимаю кнопку Insert
В механике я прописываю следующее - если мышь нажимает на спрайт, то кадр в анимации перескакивает на +1.
Уменьшение жизней при клике мышью - путь: перехожу в верхнюю вкладку под названием Event sheet 1 -->
--> вызываю правой кнопкой мыши меню и выбираю Add event --> в появившемся окошке выбираю Mouse --> Next -->
--> On object clicked --> Next -->
--> в открывшемся окошке в Object clicked выбираю спрайт с сердечками --> Done -->
--> в появившейся системе нажимаю Add action -->
--> в окне выбираю спрайт с сердечками --> Next --> нахожу Set frame --> Next -->
--> в правом окошке Object with expressions нахожу название спрайта с сердечками и в соседнее окошка в графу Frame number прописываю Sprite.AnimationFrame+1 (сначала идет название объекта, затем команда, а после прибавление одного кадра) --> Done
Система в итоге:
После этого я не беспокоюсь о том, чтобы прописывать каждый кадр.
Теперь обозначаю, что произойдет, если система дойдет до последнего кадра.
Я прописываю, что, если кадр равен 5, то черный спрайт разрушается.
Разрушение черного спрайта при 0 сердечек - путь: вызываю правой кнопкой мыши меню и выбираю Add event --> в появившемся окошке выбираю спрайт с сердечками --> Next --> Compare frame --> Next -->
--> в появившемся окошке Parameters for Sprite: Compare frame в строке с Comparison я оставляю = Equal to, а в строке с Number ставлю 5 (цифра последнего кадра в анимации с сердечками) --> Done -->
--> напротив появившейся системы нажимаю Add action --> выбираю черный спрайт --> Next --> Destroy --> Done
Механизм состоит всего из двух событий в "журнале".
Теперь я запускаю проект.
Если вы делали систему жизней вместе со мной, то скидывайте свои результаты в комментарии. Подписывайтесь на канал и читайте еще больше интересных штук. :)