Доброго времени суток, дорогие читатели! В одной из статей я рассказывал вам как создать игру жанра арканоид за пол часа. Можете ознакомиться с ней тут:
В этой же статье по точно такому же принципу я расскажу вам как создать игру жанра астероиды. Данный урок предполагает, что вы ознакомились со всеми прошлыми обучающими статьями, которые описывают работу движка Game Maker Studio.
Готовим ресурсы
Находим и качаем бесплатный пак графики для нашей игры. Я решил взять спрайты по этой ссылке:
Далее в самом движке создаем и загружаем спрайты из данного пакета графики. Прошу обращать внимание на имя спрайта, на то, куда установлен якорь спрайта (чаще всего по центру) и какая маска спрайта для определения столкновений.
Так же загружаем три звука (точнее два звука и одну мелодию) для игры и называем их так, как указано на скриншоте ниже:
Имена файлов в скаченном паке, которые мы будем использовать:
Explosion.wav - звук взрыва (находится в папке Audio) - в GMS мы его называем snd_explosion
Laser_Shoot.wav - звук выстрела (находится в папке Audio) - в GMS мы его называем snd_fire
spaceship shooter.ogg - музыка (находится в папке Music)- в GMS мы ее называем snd_music
Так же создадим какой-нибудь шрифт для игры, чтобы можно было выводить очки на экран:
Создаем объекты
Спрайты готовы. Переходим к созданию объектов и программированию их логики. Возле каждой строчки кода оставил комментарии (зеленым цветом).
1) Объект корабля
Ниже код каждого из событий с подробным описанием каждой строчки кода:
2) Объект астероида
Ниже код каждого из событий с подробным описанием каждой строчки кода:
3) Объект выстрела/снаряда
Ниже код каждого из событий с подробным описанием каждой строчки кода:
4) Объект взрыва
Ниже код каждого из событий с подробным описанием каждой строчки кода:
5) Объект контроллер
Данному объекту не назначаем никакой спрайт, т.е. сам по себе он будет невидимым в игре. По сути это просто объект, который управляет какими-то элементами игры, плюс в нем мы будем выводить на экран жизни и очки.
Ниже код каждого из событий с подробным описанием каждой строчки кода:
Создаем комнаты
Создаем две комнаты. В одной (пустой) у нас просто будут задаваться все необходимые начальные параметры и сразу переход в следующую комнату. Во второй комнате у нас уже будет непосредственно сам уровень.
1) Первая комната
2) Вторая комната
Далее проверяем, чтобы в дереве ресурсов наша первая комната шла именно первой в очереди (рядом с ней должен быть нарисован домик). Если она будет стоять ниже, то просто перетащите ее вверх:
Запускаем!
Игра готова! Можете запустить и потестировать.
Не забывайте, что повороты корабля влево-вправо назначены на кнопки "A" и "D", а подача газа на "W", выстрел мы назначили на кнопку "Пробел".
У нас всего 5 жизней. После этого игра начнется заново. Если же мы уничтожим все астероиды на экране, то комната перезагрузится и они появятся снова, но очки при этом не сбросятся, т.е. можно будет продолжать набирать их, пока игрок не потратит все жизни.
Спасибо, что дочитали статью до конца! Ставьте лайки, делитесь ей с другими, задавайте вопросы, оставляйте комментарии, пожелания и т.д. Если есть непонятные строчки в коде, то можете смело задавать вопросы по ним в комментариях. Я постараюсь подробнее объяснить, что делает та или иная функция в коде. К сожалению, в рамках одной статьи это нельзя рассказать подробно. Статья преследует другие цели - показать в общем логику создания одной простой игры, не вдаваясь в подробности.