В этом уроке мы рассмотрим наиболее сложный момент, который встречается при создании игр, – инвентарь.
Создадим новый документ. Сначала нарисуем поверхность и героя, как мы уже делали в уроке 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.
Проверяем. Заполняем инвентарь предметами, удаляем их и снова заполняем. Всё должно работать.
Программу, которую мы создали, можно ещё и оптимизировать. Какие наши действия были лишними?
А в следующий раз мы познакомимся с приближением в играх.
В этом уроке мы узнаем, что такое 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 –
О проекте
О подписке