Читать книгу «Конструктор игр Clickteam Fusion» онлайн полностью📖 — Семёна Леонидовича Углева — MyBook.

Урок 4. Инвентарь в игре

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

Создадим новый документ. Сначала нарисуем поверхность и героя, как мы уже делали в уроке 2. Ничего страшного, повторение – мать учения. Растянем первое изображение в длинный прямоугольник, нажмём Clear и воспользуемся зелёной заливкой.


Создадим героя, назовём его “Hero” и загрузим для него спрайт Диззи. В Animations – Stopped установим:



Для Walking установим следующие значения для движения вправо и влево (а также загрузим по 3 анимации Диззи для движения в этих направлениях):



Точно такие же значения зададим для Jumping и загрузим по 7 анимаций. Для Falling будут те же значения и по 3 анимации.



Теперь создадим два предмета, которые будем брать в инвентарь. Пусть это будут жёлтый и красный круги.

Вот что у нас пока получилось:



Кликаем на Event Editor – New condition – Hero – Collisions – Another object и выбираем нашу поверхность. Затем задаём для нашего героя Movement – Type – Platform. Возвращаемся в Event Editor, кликаем на столбец героя и задаём Movement – Stop.



Создаём еще один объект Active. В его окне выбираем Fill tool, Clear, Brush tool и рисуем фрагмент травы.



Называем её Green и с помощью функции Duplicate создаём 22 таких же изображения. Размещаем их так, чтобы они располагались на нашей поверхности от одного конца экрана до другого.



Запускаем приложение (F8) и убеждаемся, что Диззи может ходить вперед и назад по траве.

Теперь создадим 2 предмета, которые будем брать в инвентарь. Пусть это будут жёлтый и красный круги. Создаём новые предметы, называем их Item 1 и Item 2, рисуем круги и раскрашиваем их в жёлтый и красный цвета соответственно.



Находим в списке объектов (All objects) Popup menu и сразу же вводим первую позицию (Add). Пусть она будет называться Nothing («Ничего»). Мы дадим нашему герою возможность выбора – ничего не брать и закрыть меню.



Привыкайте, что сами предметы лучше сразу включать в группы. Тогда мы сможем обращаться не к конкретному объекту, а к любому объекту в группе. Следующий пример покажет, как это работает.

Кликаем на красный круг, Events – Qualifier(s) – Edit – Add – Friends.



А пока откроем редактор событий. Создадим первое условие, чтобы наш герой не падал вниз, а перемещался по земле. New condition – The mouse pointer and keyboard – The keyboard – Upon pressing a key, нажимаем клавишу Enter.

И сразу создаём второе условие. Давайте при нажатии клавиши Enter выводить наше меню в заранее указанное место. Кликаем на столбец Popup menu, выбираем Show At и перетаскиваем меню в нужное место.

Копируем второе условие и создаём третье. Ведь если мы нажали Enter и в это время герой перекрывает объект, его нужно добавить в наше меню. Так мы и поступим: кликаем на Upon pressing “Enter” – Insert – Hero – Collision – Overlapping another object – Item 1 (жёлтый круг). Далее кликаем на столбец Popup menu – Add item.

Присвоим жёлтому кругу номер 2 (первый у нас уже есть – это «Ничего») и название “Yellow circle” (в появляющихся окнах нужно написать 0, 2 и Yellow circle соответственно). Сам объект перенесём в область за пределы игрового пространства: кликаем на столбец жёлтого круга, Position – Select position и задаем его координаты.

Создадим следующее условие на основе предыдущего: вновь скопируем строку условия, поменяем в ней жёлтый круг на красный и переставим галочку на столбец красного. При этом мы изменим номер объекта (3) и его название (Red circle).



Теперь научим программу выкладывать предметы: New condition – Popup menu – Item selected – 2. Если в нашем меню выбран Item 2, удалим его из меню и перенесём его снова рядом с главным героем: кликаем на столбец жёлтого круга – Position – Select position – Relative to – Hero. Далее перетащим квадрат с изображения героя на положение справа от него.



Теперь в столбце Popup menu выберем Delete item – 2. Всё то же самое сделаем и для красного круга.



Проверяем (F8). Итак, у нас есть меню, в котором ничего нет. Возьмём поочерёдно желтый и красный круги, а потом всё вместе. Всё работает!

Закроем этот проект и создадим новый, в котором мы создадим наглядный инвентарь для квестовой сцены. Создадим объект (Active).

Загрузим заранее приготовленную картинку с пустыми окнами для предметов и два предмета. В данном примере использовалось изображение игры «Secrets of the Dark: Eclipse Mountain», взятое с сайта www.metacritic.com. Давайте узнаем размер картинки, создадим экран такого же размера (для картинки ниже это Frame 1 – Settings – 560 x 420), а саму картинку установим в координаты 0:0, то есть она должна полностью совпасть с экраном.



Назовем картинку “Font”.

Создадим два активных объекта, загрузим заранее заготовленные изображения предметов и назовём их Item 1 и Item 2. Не забываем поместить их в общую группу (Events – Qualifier(s) – Edit – Add – Friends).



Перетаскиваем их на нашу картинку.



Теперь создадим новый объект, который будет активным местом для нашего меню. Сделаем его зеленым квадратом по размеру ячейки в нижней части нашей картинки.



Кстати, не забудем указать для наших предметов инвентаря тип перемещения Bouncing ball («прыгающий мяч»).



Переходим в редактор событий.

Создаём первое условие: New condition – Storyboard controls – Start of frame, в столбцах Item 1 и Item 2 выбираем Movement – Stop. Так при старте фрейма мы останавливаем наши объекты, так как изначально скорость движения у них указана 60 (в настройках типа перемещения).



Второе условие: если мы кликаем мышью по объекту, мы направляем его в сторону активного квадрата. New condition – The mouse pointer and keyboard – The mouse – User clicks on an object. Нажимаем ОК.



В появившемся окне выбираем Friends.

Дальше кликаем на столбец друзей – Direction – Look in the direction of – Relative to – Зеленый квадрат. Нажимаем «OK» в следующем окне, подтверждая координаты 0:0. Далее снова кликаем на столбец друзей – Movement – Set speed и указываем скорость движения 60.



Заметьте, мы указываем не конкретный предмет инвентаря, а сразу всю группу.

Теперь давайте остановим объект и разместим его в ячейке. Сделаем это в виде условия накладывания объекта – здесь мы опять используем группу – на наш активный квадрат. При этом мы размещаем предмет по центру квадрата, останавливаем его, а сам квадрат отодвигаем в сторону так, чтобы он был размещён по центру следующей ячейки. New object – Friends – Collisions – Overlapping another object – Зеленый квадрат. Кликаем на столбец друзей – Position – Select position – Relative to – Квадрат. Еще раз кликаем на столбец друзей – Movement – Stop. Далее столбец квадрата – Position – Select position – Relative to – Квадрат.





Проверяем работу – всё должно работать. Предметы летят к квадрату, сам квадрат смещается на одну ячейку.



Но что будет, если будет заполнено всё место в инвентаре?

Сделаем наш квадрат невидимым. Расклонируем любой наш объект, чтобы проверить заполненность инвентаря.



Сначала научим программу удалять объекты из инвентаря. Условие: если мы кликаем левой кнопкой мыши по объекту, при этом объект находится в зоне меню, его можно удалить.

New condition – The mouse pointer and keyboard – The mouse – User clicks on an object – OK – Friends. Далее кликаем на условие – Insert – The mouse pointer and keyboard – The mouse – Check for mouse pointer in a zone и выделяем нижнюю часть нашей картинки (ячейки).



Кликаем на столбец друзей – Destroy.

Следующее условие. При выходе активного квадрата за пределы нашего инвентаря его нужно вернуть на первую позицию. Но сделать это нужно в том случае, если объектов в инвентаре меньше или равно семи. New condition – Квадрат – Position – Compare X position to a value, затем задаем значение и выбираем Greater or equal.

И ещё. Почему на первую позицию, ведь она может быть занята предметом? Посмотрим ещё раз наш алгоритм. Если первая позиция будет занята предметом, то квадрат сразу сместится на вторую, а если занята вторая – на третью, и так далее.

Кликаем на условие – Insert – Friends – Pick or count – Compare to the number or “Group.Friends” objects in a zone и снова перемещаем окно на наши ячейки внизу. В появившемся окне выбираем Lower or equal, 7.



Первую координату Х активного квадрата мы узнаем из его свойств.



Кликаем на столбец квадрата – Position – Set X coordinate и вводим координаты.

Так как у нас уже есть условие по клику мыши, исключим для него возможность срабатывания, когда предмет уже находится в инвентаре (кликнем на координаты и выберем в выпадающем списке Lower). В Start of frame добавим опцию Stop для Item 3-10.



Проверяем. Заполняем инвентарь предметами, удаляем их и снова заполняем. Всё должно работать.



Программу, которую мы создали, можно ещё и оптимизировать. Какие наши действия были лишними?

А в следующий раз мы познакомимся с приближением в играх.

Часть II. Функционал игр

Урок 5. Приближение в играх

В этом уроке мы узнаем, что такое zoom-zoom. Мы рассмотрим три способа, но сначала зайдём на официальный сайт Clickteam – Clickstore и загрузим Mega Shader Pack.


Затем перенесём файлы из архива в папку с Clickteam Fusion.



Первый способ

Откроем новый проект, загрузим любой понравившийся фон (например, свободно распространяемое изображение с сайта 10wallpaper.com) и добавим активный объект и Backdrop.



Добавим для активного объекта эффект линзы: Properties – Effects – Lens – OK.



Также снимем чекбокс в настройках напротив слов «следовать за фреймом».



Также перетащим активный объект и зададим ему такие параметры, чтобы он занимал все поле.





Затем перейдём в редактор событий и будем увеличивать первую переменную при прокручивании колёсика мыши вверх и уменьшать при прокручивании колеса вниз. New condition – The keyboard – When mouse wheel is moved up – OK, повторяем для следующего условия, выбирая «Moved down».



Кликаем на столбец объекта в первом условии – Alterable values – Add to – (вводим 1) – ОК. Повторяем для второго условия, заменяя на «Subtract from».

В последнем событии «Всегда» мы будем присваивать второй переменной значение по показанной формуле и применять нужный эффект. Для третьего условия кликаем на Special conditions – Always. Кликаем на столбец объекта – Alterable values – Set – (выбираем в выпадающем списке Alterable Value B, кликаем на объект) – Values – Values A to M – Retrieve alterable value B –

Конец ознакомительного фрагмента.