Создание арканоида в Game Maker. - Разработка игр - Каталог статей - Game Maker
Четверг, 08.12.2016, 12:45
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Файлы и ресурсы
Топ 5 участников
1. BRESS
Репутация: 221
Сообщений на форуме: 3239
2. Gracio001
Репутация: 181
Сообщений на форуме: 1370
3. Xomafok
Репутация: 164
Сообщений на форуме: 947
4. FarEastKmS
Репутация: 125
Сообщений на форуме: 359
5. aHDp
Репутация: 114
Сообщений на форуме: 755
Топ 5 игр
Agent Green 4.6 / 5.0
Wartime 4.3 / 5.0
FeDo 4.0 / 5.0
Adventures: ... 4.0 / 5.0
Secretive ha... 4.0 / 5.0

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

Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Статистика



На сайте: 9
Гостей: 9
Пользователей: 0
koaran
Просмотров страницы:
5822

Рейтинг материала:

Другие работы автора:
- -

Поиск по сайту
Game Maker
Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации.
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации.
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна.
Войти на сайт

Мини-чат
300

Так как чат открыт для всех, просьба отнестись с уважением к другим посетителям и не писать осознанно посты, оскорбляющие кого-либо, содержащие открытую рекламу/спам. Спасибо за понимание! :)
Опрос
Как Вы узнали о нашем сайте?
Всего ответов: 501
Мы в Вконтакте
Главная » Статьи » Разработка игр

Создание арканоида в Game Maker.
Часть 1. Основные спрайты
Итак, для начала нужно скачать спрайты и фоны, которые мы будем использовать - ссылка.

После того как вы скачали и распаковали архив, можно приступать к созданию арканоида:



Вот какой должна получиться игра!

Для начала, заходим в Game Maker и создаем новую игру. После этого создадим новый спрайт - платформу, от которой будет отскакивать мячик. Он находиться в архиве в папке "спрайты" - "платформы" - "платформа обычная". Затем нажимаем Edit sprite и выбираем Тransform. Жмем Strech и растягиваем платформу до размеров 81 на 18 :



Теперь создадим спрайт мячика. Он находиться в папке "Спрайты". Назовем его ball :



Таким же же способом создаем спрайт wall - спрайт стены(в той же папке)


Итак, только что мы создали основные спрайты арканоида.

Приступим к объектам! Создаем новый объект под названием под названием ball, и дадим ему спрайт ball. Щелкаем add event и добавляем событие Create. Пишем для него действие Move Free (во вкладке Move). В direction пишем 126, а в speed 8.


Часть 2. Движение мяча и управление платформой.
Создадим объект platform_norm со спрайтом платформы. Событий пока что не добавляйте, закройте объект и добавьте еще один - объект стены, со спрайтом стены. Назовите wall.

Самое главное в арканоиде - отскакивание мяча от платформы и стены. Чтобы сделать это, откройте объект нашего мячика и создайте новое событие Colission with platform_norm(столкновение с платформой). Добавим действие Execute Code (вкладка control, отдел Code). В появившееся окно напишите код:

action_bounce(true,true);

Добавьте новое событие Colission with wall. Добавляем такое же действие с таким же кодом.

Теперь создайте комнату(room). Размеры комнаты по умолчанию - 640х480, менять не надо

Вверху комнаты вы увидите надписи - Snap X и Snap Y. Это размеры сетки в комнате. Поставьте 16 и 16.

Кликните немного выше надписи Object to add with left mouse(Слева внизу) и выберите объект wall. Теперь попробуйте кликнуть на комнату(комната - площадь, разделенная сеткой) и увидите, что наша стена появится там, где вы кликните. Попробуйте расставить стены по краям комнаты. После этого выберите объект платформы и поставьте посередине внизу на предпоследней строке. Именно на предпоследней. А мячик поставьте немного выше платформы. Должно получиться так:

Закрываем комнату и открываем объект платформы. Добавляем событие End Step и добавляем в него действие Jump to Start(вкладка Move, отдел Jump). В появившееся окно пишем:

x: mouse_x
y: 448

Объясню что мы только что сделали. Мы сделали событие, в котором наша платформа может передвигаться только по вертикали 448 (предпоследняя строка), а по горизонтали куда мышка направит.

Запустим игру (клавиша F5) и если вы все сделали правильно, то мяч в комнате будет передвигаться с стороны в сторону, отбиваясь от платформы и стен. А платформа передвигаться вслед за вашей мышкой.


Часть 3. Первый блок.
В этой части мы создадим блоки - объекты, которые нужно уничтожить мячиком, чтобы набирать очки и переходить на следующий уровень.

Открываем нашу игру и создаем новый спрайт - спрайт красного блока. Он находиться в архиве в папке "Спрайты"-"блоки" под названием "красный1". Назовем его red_block1

Добавим иной спрайт. Он находиться в той же папке под названием "красный2"(потресканный "красный1"). Назовем его соответственно red_block2.

Приступаем к объектам: создаем объект red_block1 - спрайт соответствующий. Так же создаем объект red_block2 - спрайт red_block2.

Теперь, когда объекты созданы, начинаем их наполнять. В red_block1 добавляем событие Colission with ball, и пишем в него действие Change Instance(вкладка main1, отдел objects). В появившееся окно пишем:

change into: выбираем red_block2
perform events:not

Итак, только что мы сделали так, чтобы при столкновении с мячиком объект red_block1 менялся на red_block2, то-есть "трескался".

Переходим к red_block2, создаем в нем событие Colission with ball, и добавляем в него действие Destroy Intance( в том же месте, картинка корзины). Этим действие мы сделали исчезновение red_block2 и удаление его с игры.

Открываем объект ball и создаем 2 события - Colission with red_block1 и Colission with red_block2. В обоих событиях пишем действие Execute a Code и добавляем уже знакомый код:

action_bounce(true,true);

Примечание: так как вот такие коды мы будем использовать нередко, вместо "пишем действие Execute Code" я буду писать "добавляем код".

Ну что же, остается только добавить объект red_block1 в комнату. Например вот так:

Если вы все сделали правильно, то при запуске игры вы сможете уничтожать блоки, и не за раз, а за два, так как red_block1 при столкновении с мячиком превращаеться в red_block2.
Часть 4. Очки и жизни.
В этой части мы поговорим о создании очков и жизней.

Для того чтобы создать очки, нужны объекты, при содействии с которыми очки добавляются и отнимаются. Для этого зайдите в объект red_block2 и добавьте в ранее созданное событие Colission with ball еще одно действие - Set Score(вкладка Score, отдел Score) и в появившееся окно запишем:

New score:20

И поставьте галочку возле пункта Relative.

Теперь после уничтожения объекта будет добавляться 20 очков. В принципе, можно поставить не 20, а любое другое число.

Откройте объект нашей платформы и создайте событие Create. В это событие добавьте код:

score=0
lives=3

Таким образом, как только платформа появится, очки будут равны нулю, а жизней будет три. Затем в это же событие добавьте действие Score Caption(вкладка Score, отдел Health).
В появившемся окне запишем:
Show score: show
Score caption: Очки:
Show lives: show
Lives caption: Жизни:

Ну а теперь поподробней о жизнях. Создадим спрайт over, щелкаем Edit sprite, затем File и потом New и создаем новый спрайт размером 640х16. Покрасьте его в какой то цвет, например, в желтый.

Создаем объект over, снимаем галочку с Visible и добaвляем событие Colission with ball, добавляем в него действие Set Lives( вкладка Score отдел Lives ) и напишите там:

New lives: -1
Relative-Галочка

Открываем объект ball и добавляем событие Colission with over и добавляем в это событие действие Bounce(вкладка Move, отдел Jump). Пишем туда:
Precise: presicely
Against: all objects

Остается лишь расставить объект over внизу нашей комнаты:

Если вы все сделали правильно, то при запуске игры при столкновении мячика с невидимым over отнимается 1 жизнь ( жизни и очки показаны вверху экрана игры), и после уничтожения треснувшего красного блока будет добавляться 20 очков.
Часть 5. Звуки и фоны.
Продолжаем работу над арканоидом.

В этой части мы постараемся добавить интересности нашему арканоиду с помощью звуком и бекграундов.

Сначала займемся бекграундами. Бекграунд - это фон игры. Добавляем новый бекграунд. Он находится в архиве "фоны" выберите любой бекграунд, который вам понравится, можете добавить свой, как хотите. Растяните его до размера 640х480. Назовем его background0.

Окрываем комнату и выбираем вкладку backgrounds. Под Foreground Image есть надпись no background. Выбираем background0 и ставим галочку на Visible then room starts(видимый вначале). Вот что должно получится:

Ну теперь осталось заняться звуками. Добавляем новый звук (Sound) и добавляем новый звук в архиве под названием гаваи 1. Назовем его music.

Открываем объект платформы и в событие Create пишем действие Play Sound( вкладка Main1 отдел Sounds) и пишем туда:

Sound: music
Loop: true

Если вы хотите чтобы звук прозвучал только один раз, поставьте Loop: false.

Часть 6. Бонусы.
В этом уроке мы поговорим о бонусах - хороших и плохих, и как их добавлять в игру.

Для начала добавим новый спрайт - блок, при уничтожении которого будет вылетать бонус. Он находится в архиве "Спрайты" - "Бонусы" под названием "бонус блок". Назовем его bonus_block.

Добавляем еще один спрайт. Он находится в той же папке под названием "жизнь". Это не обычный спрайт. Это анимация. Точнее, несколько картинок, которые вместе составляют анимацию. Назовем life.

Создаем объекты bonus_life (спрайт bonus_block) и life (спрайт life). В объект bonus_life добавляем событие Colission with ball и пишем туда действие Destroy Instance(корзина).
Добавляем новое событие Destroy. Пишем действие Create Moving (Main1/objects). В него записываем:

object: life
x: 0
y: 0
speed: 3
direction: 270
Галочка на Relative обязательна.
Все это значит, что при уничтожении бонус блока объект life устремится вниз(direction 270) со скоростью 3.
Открываем объект life и добавляем событие Colission with platform_norm. Пишем действие Destroy Instance. И затем еще одно - Set lives(Score/lives). Записываем туда:

New lives: 1
Relative - галочка.

Ну а теперь добавляем новый спрайт. Находится в той же папке под названием "смерть". Назовем skull.
Далее мы делаем почти то же самое, что и с бонусом жизни. Дублируем объект bonus_life. Называем его bonus_skull. А в действии Create moving пишем:

object: skull

Остальное не меняем.
Создаем объект skull с соответствующим спрайтом. Добавляем событие Colission with ball и пишем в него действие Set lives:

New lives: -1
Relative - галочка.

В объект ball добавьте события Colission with bonus_life и Colission with bonus_skull. В оба события пишем код:

action_bounce(true,true);

Расставьте бонусы по комнате:

Запустите игру. Если вы все сделали правильно, то при столкновении с мячиком бонус блок уничтожится и из него будет вылетать бонус.
Категория: Разработка игр | Добавил: koaran (14.08.2012)
Просмотров: 5822 | Комментарии: 31 | Теги: арканоид, game maker, создать | Рейтинг: 3.7/7
Всего комментариев: 311 2 »
31 GreedMore   (17.04.2016 00:05)
GreedMore Кстати, действительно нет ответа на то, как сделать, чтобы бита не "улетала" за пределы экрана

30 GreedMore   (16.04.2016 23:54)
GreedMore прошу пардону... Скачал ресурсы, попробовал сделать арканоид... Но что-то не очень получается.
1. Почему-то выдает с самого начала жизни -1, и ничего не удается исправить...
2. Хотелось бы узнать, как сделать бонусы типа "стрельба" или "прилипание", или "замедление", или "ускорение".
В целом очень неплохая статья, хотя не помешало бы после каждого шага подробное "разжевывание" для чайников, что же именно мы сделали и почему.

24 Дарья   (15.04.2014 05:56)
Дарья Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы по исчезновению всех блоков с уровня, игра автоматически переходила на второй уровень? 
И, если можно, как сделать так, чтобы по истечению всех трёх жизней игра прекращалась? А то, получается, что жизней 0, а игра продолжается и при попадании мяча на жёлтую линию внизу экрана кол-во жизней становиться -1.
Заранее спасибо за помощь ah

26 BRESS   (15.04.2014 10:49)
BRESS Завершение игры при отсутствии жизней:
if жизни < 0 game_end()

Переход в следующую комнату, при условии, что все блоки разбиты:
if !instance_exists(блок) room=следующая_комната

27 Дарья   (16.04.2014 04:28)
Дарья Благодарю happy

23 Sanya_Mc   (02.03.2014 14:22)
Sanya_Mc И ещё вот чего, как сделать так что бы направление мяча зависело от того в какую сторону сдвинем платформу. Просто сталкивался с такими моментами что мяч летает вверх и вниз, и никакие силы не вправе изменить его движение влево или вправо. Так же у меня почему то не получается сделать так, что бы платформа не уходила за пределы комнаты или стены, она уходит просто за стену и дальше за пределы комнаты. Подскажите пожалуйста Т_Т

22 Sanya_Mc   (02.03.2014 14:15)
Sanya_Mc У меня такая вот проблема, блоки пропадают сами, не зависимо от того попадает по ним мяч или нет, как это можно исправить? Так же можно ли сделать запуск шарика вручную после смерти? Т.е. мяч упал, уничтожился и реснулся на том месте где появляется при запуске игры, мы нажимаем на него и он снова начинает движение. И как вывести окно очков и жизней на экран?

20 влад   (25.07.2013 07:57)
классно, попробую сделать чтобы еще можно было проходить на время, там будут секунды(задержка секундомера)

21 koaran   (28.07.2013 15:09)
koaran Можно, с помощью alarm'ов

18 Славян   (27.06.2013 16:53)
Славян Для меня это будет лучшая статья!

19 koaran   (07.07.2013 14:13)
koaran Эх, очень приятно biggrin

14 Atekinera   (26.02.2013 12:14)
Не подскажете, как сделать так, чтобы при соприкосновении платформы с бонусом, мяч увеличил скорость?(да, я новичок) surprised

15 Gracio001   (09.03.2013 05:49)
Gracio001 добавь туда move fixed отметь все стрелки, отметь относительно и пиши в speed: +1. отметь объект мяча сверху

17 BRESS   (12.04.2013 17:32)
BRESS speed+=1;

11 MasterSambo   (06.11.2012 10:14)
MasterSambo Интересно,но со спрайтами которые рисовал я не очень графика.

6 Dominoshka   (02.11.2012 15:56)
Спасибо за статью! Очень полезная штука.
Но у меня возник вопрос: можно ли сделать счетчик очков и жизней.
И если можно, то как? Заранее спасибо! smile

7 koaran   (02.11.2012 19:16)
koaran Но это ведь есть в статье. wink

8 РедкийЧел   (03.11.2012 17:37)
РедкийЧел Нет. Он имеет ввиду чтобы очки отображались в САМОЙ игре. С помощью такого вот скрипта. Или спомощью draw health, draw the lives images. Я могу про это статью написать, уже в этом деле собаку съел biggrin

9 koaran   (03.11.2012 20:11)
koaran Ну, я с таким не сталкивался happy

10 РедкийЧел   (04.11.2012 15:24)
РедкийЧел Так что, писать? Правда, это будет не слишком скоро, надо кое-что отыскать!

12 koaran   (12.11.2012 10:23)
koaran Я не против, пиши. Лично для меня это будет полезно biggrin

25 Дарья   (15.04.2014 06:00)
Дарья Напишите, пожалуйста happy

28 lexakrut9   (12.01.2015 20:25)
lexakrut9 Создаём объект "Controller", далее создаём событие Draw.
Идём в наш уровень и выбираем координаты расположения наших счетчиков. По оси Х и У.
Дальше возвращаемся в объект и пишем.
В действия добавляем:  Draw the value score. Внутри его пишем наши координаты.
Всё, теперь очки будут отображаться в заданных нами координатах.
Насчёт жизней.
Добавляем действие Draw the lives as image и внутри выбираем спрайт. Задаём координаты где они будут отображаться, и всё)

29 lexakrut9   (12.01.2015 20:28)
lexakrut9 Ах, да не забудьте поставить объект на уровне) happy

16 Dragon_klaw   (10.04.2013 11:26)
Dragon_klaw 1-создай объект без спрайта
2-в create поставь "draw life images" и поставь туда спрайт который хочешь(сердце)
3-задай координат х-16 у-16
4-запусти игру
5-наслаждайся!

1-10 11-14
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]