Создание арканоида. Часть 1: Основы.

уроки, мануалы, советы по Construct 2

Сообщение Создание арканоида. Часть 1: Основы.
» 26 мар 2014, 13:00

Всем привет! Сразу хочу напомнить вам терминологию:

 Терминология
— ПКМ -правая кнопка мыши
— ЛКМ -левая кнопка мыши
— Список событий -экран event list
— Рабочая область -там где вы спрайты ставите
— Команды - тот список где всякие условия или действия
— Событие - это вся строчка кода где и есть и условие и действие
— Условие - это первая (левая) часть события там где задаем как и когда, например: start of layout
— Действие - это вторая (правая) половина события так где задаем что делать, например set animation


В этих уроках я подробно расскажу как создать арканоид и как срубить бабло. Спрайты можно взять здесь. Создадим новый проект и давайте сразу приведем все в порядок.
Изображение

1) Я переименовал все и привел в подобающий вид.
2) Я добавил объект Mouse для управления платформой.

Теперь давайте рассмотри базовую механику:

1) У нас будет мячик. Он будет отбиваться от стен, блоков и платформы.
2) Стены будут находится на левой, правой и верхней границах экрана.
3) У нас будет платформа, как говорилось ранее ей мы будем манипулировать мышкой, но вы вполне можете сделать это с помощью клавиатуры, главное чтобы это было сделано грамотно.
4) Собственно, блоки разной прочности. Если прочность блока больше единицы, то блок удаляется и на его место ставится менее прочный, а если прочность блока равна единице, то блок просто удаляется.

Приступаем: Для начала переименуем слой "Layer 0" в "Background" и создадим слой "Game".
Изображение

В этом уроке я хочу поподробнее рассказать о слоях, поэтому давайте остановимся на свойствах слоя, для этого выбираем любой слой и получаем что-то вроде этого:
Изображение

Name - имя слоя, желательно, что-то вразумительное.
Initial visible - при запуске игры видно этот слой или нет.
Background color - цвет фона. В этой игре я решил поставить (71, 92, 141)
Transparent - прозрачность слоя обычно во всех слоях кроме Background поставлена на Yes, т.к. тогда они закроют фон.
Opacity - насколько слой прозрачен.
Force own texture - фича для эффектов, с не ясной документацией.
Scale rate - приближение и отдаления слоя, зум.
Parallax - смещение слоя.
Остальные свойства не столь важны на данном этапе.
Минутка теории закончена, давайте добавим мячик, ПКМ -> Insert new object -> Sprite. Выбираем скаченную текстуру мячика. Отлично, теперь надо добавить к нему поведение Bullet. Сериза уже рассказывал про это поведение, нам нужно поставить свойство Bounce of solids на Yes, теперь мячик будет отскакивать, как и задумывалось.
Изображение

Теперь добавим стены. Создадим спрайт и закрасим его любым цветом лиж-бы было заметно и расставляем их так чтобы не торчали, но лежали прямо на гранях. Как то так:
Изображение

Теперь надо сделать стены твердыми, добавляем поведение Solid стенам.
Остались блоки и платформа, начнем со второго. В очередной раз создаем спрайт, выбираем скачанную текстуру платформы и называем его paddle. Добавляем поведение Solid чтобы мячик мог отскакивать от нее. Вот, можно и к "коду" перейти: Создаем условие System => Every Tick. И добавляем действие для платформы Set Position. В X пишем Mouse.X (Помните в начале я создал объект Mouse? Этот тип объекта нужен только для работы с мышью, но, например, на рабочую область его никак нельзя перетащить). В Y пишем paddle.Y .
Изображение

Осталось добавить блоков. Просто пихаем их спрайты после всего этого у меня вышло что-то типа этого:
Изображение

Не забудьте добавить каждому блоку поведение Solid. Копируем и вставляем блоки на поле. Запускаем и играемся, если кому не нравится скорость, то кликаем по мячику и в поведении "Bullet" подбираем скорость. Теперь открываем экран событий и добавляем события колизий для всех блоков - Ball => On collision with another object и выбираем серый блок, потом опять это событие, но для других блоков. Как говорилось ранее, если блок прочный, то подставляем менее прочный, т.е. ставим менее прочный и удаляем старый, иначе - блок не прочный - удаляем его. Получается что-то вроде этого:
Изображение

Если вы не ясно понимаете, что здесь происходит, то перечитайте механику и задумайтесь как это надо реализовать.

Примерно такой результат должен быть у вас:
Изображение


Теперь бонус:
Как вы заметили, платформа залезает за стены - это можно исправить в одну строчку:
Изображение

Здесь записана вот такая строка в поле X:
Код: Выделить всё
max(paddle.Width / 2, min(Mouse.X, LayoutWidth - paddle.Width / 2))

Домашняя работа:
На тройку - выполнить все в точности как сказано
На четыре - выполнить все в точности как сказано и здраво назвать все переменные, чтобы человек знающий английский мог понять, что здесь происходит
На пять - выполнить все в точности как сказано и здраво назвать все переменные, чтобы человек знающий английский мог понять, что здесь происходит; объяснить как работает бонус в сообщении или реализовать блоки рациональней (Такой вариант точно есть)

Если что-то не поняли - ЛС мне. Всегда рад ответить.
Последний раз редактировалось yegorf1 27 мар 2014, 13:29, всего редактировалось 5 раз(а).
Аватара пользователя

Участник
Сообщений: 134
Я тут с 09 фев 2014
Skype: yegorf1
Репутация 9 [ ? ]

Сообщение Создание арканоида. Часть 1: Основы.
» 02 апр 2014, 10:31

Слухай, твоего аркашу можно оптимизировать немного, сделай всего один блок и в него в анимацию добавь остальные, и сделай ему переменную - "прочность". и смотри когда шар попадает в блок у него отнимается прочность, если она равна 0 то он разрушается, и еще одно событие чтоб фрейм анимации был равен текущему значению переменной... фухх все. Тогда поудобней будет)) если не понял или не согласен то напиши в лс)
Аватара пользователя

Участник
Сообщений: 44
Я тут с 20 янв 2014
Skype: kostya_kurt2
Репутация 16 [ ? ]

Сообщение Создание арканоида. Часть 1: Основы.
» 07 апр 2014, 18:05

урок перемещен из скрытого раздела для учителей -сюда в общий доступ
Аватара пользователя

Администратор
Сообщений: 5706
Я тут с 05 сен 2012
Двиг: Construct2
Лицензия: Personal
Skype: c2community
VK: gabrielsailergray
Репутация 377 [ ? ]

Сообщение Создание арканоида. Часть 1: Основы.
» 19 апр 2014, 14:55

Более простой вариант использования
Код: Выделить всё
max(paddle.Width / 2, min(Mouse.X, LayoutWidth - paddle.Width / 2))

1. Выделяем paddle
2. в behaviors добавляем BoundToLayout
профит, paddle вылетать больше не будет
Если помогли ? скажи спасибо нажав Изображение

Оптимизация проектов на С2 || ТОП рекордов Онлайн

Изображение
Аватара пользователя

Игродел
Сообщений: 329
Я тут с 18 апр 2014
Откуда: астрал
Репутация 46 [ ? ]



Вернуться в Уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх