пятница, 9 ноября 2012 г.

Создание арканоида в 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);

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

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

Комментариев нет:

Отправить комментарий