Как сделать игру платформер 3 часть

Добавил пользователь Валентин П.
Обновлено: 18.09.2024

В первой части игры Платформер делаем физику героя. Ходить, бегать, прыгать. Основы основ:) Не ленитесь и .

Создайте платформер в блоках Scratch Code - мы добавляем анимацию игрока с помощью костюмов Scratch Cat Walk Cycle, но для .

В третьей части мы делаем карту игры. Чтобы движение героя выглядело реалистично. Спрайты для игры:▻▻ .

. вернее попрыгали и так как же создать платформер с крыш для начала нужно создать имитацию гравитации чтобы наш .

Привет! Мечтал сделать крутой платформер на Скретче? Тогда ты попал по адресу. Эта обучалка - не для слабаков.

В этом видеоуроке создадим интересную игру: "Неоновый платформер" в Scratch . Если понравилось видео .

Привет! Мечтал сделать крутой платформер на Скретче? Тогда ты попал по адресу. Эта обучалка - не для слабаков.

Привет друзья! Сейчас у нас с вами продолжение игры Платформер на Скретч. На этом уроке мы научим кота прыгать.

Привет! Мечтал сделать крутой платформер на Скретче? Тогда ты попал по адресу. Эта обучалка - не для слабаков.

Hi guys In this video series I will be showing you how to make a Scrolling platformer game in scratch This is Part 1 in making a .

Hi Guys, In this NEW Scratch Tutorial Series, I will be showing you how to make an AWESOME Scrolling Platformer ! Characters .

How to create a tiled scrolling platformer in scratch - part 3 Games with their level's stored as a grid of tiles are very fast at .

As per request, I am starting this series of platformer game design. If you like to learn about game design and physics in games, .

Сегодня мы будем создавать первую часть игры "Платформер-шутер" в Scratch! Ты узнаешь: - как подготовить фон для .

How to create a tiled scrolling platformer in scratch Games that use scrolling tile grids for their levels are hugely common and .

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

Привет! Мечтал сделать крутой платформер на Скретче? Тогда ты попал по адресу. Эта обучалка - не для слабаков.

Для более детально изучения основных возможностей построения платформенной игры в среде Юнити pro, нужно понимать общее понятие сути платформера.

Платформер (Platformer) – направление компьютерных игр определённого жанра, основной сюжетной линией является прыгание по платформам, взбирание по лестницам, а так же сбор необходимых предметов для завершения уровня. Некоторые с предметов могут наделять персонажей особыми навыками, примеры:

Пример платформера

  • Сила удара;
  • Защитный щит;
  • Огромные прыжки и скорость.

В таких сюжетах встречаются противники созданного героя, они в основном наделены примитивным искусственным интеллектом. Количество, так называемых врагов, встречается разное, это зависит от сложности уровней и сюжет игры. Влияние на показатели жизнеспособности и навыков, собранных главным персонажем на протяжении отведённого времени, осуществляется на уровне соприкосновения или уничтожения.

Пример платформера Android

Уровни, как правило, разбиты на сектора со скрытыми подходами в стенах или высокими, труднодоступными местами. Такого рода ступени игры характерны нереалистичностью и рисованной графикой.

Что бы закрепить и лучше усвоить информацию, создадим игру для системы Android.

Предварительная настройка под Android

Перед тем как уже сформирована суть и есть примерные наброски сюжета нужно сделать вход и настройку системы:

Создание 2D проекта

Редактор платформера

Поиск и подготовка компонентов

Следующим будет поиск в сети Интернет понравившееся картинки главного персонажа и платформы, и шагаем вперёд:

Настройка главного персонажа

Обучение процесса перемещений

Для того, что бы можно было управлять функционалом героя, нужно заранее сделать обучение. Тут понадобиться:

Первый скрипт программы

Обучение процесса прыжков и вид сопровождение камеры

Что бы задать движения в виде прыжков, нужно зайти в тот же текстовый редактор, где заданы значения перемещений, и прописать:

  • Добавляем новую проверку if (Input.GetKeyDown) (KeyCode.Space)), таким образом задана клавиша Spaces (Пробел) для привода прыжка;
  • Следующее значение задаст силу толчка rb.AddForce (Vector2.up * 8000).

Добавление прыжка персонажу

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

Скрипт для камеры

-10ft выставляется для значения Z, что бы герой не вращался в пространстве.

  • Теперь кликаем на Main Camera и перетаскиваем ссылку на игрока к скрипту Cam Move.

Свойство камеры

Что бы объект ни перемещался по одной платформе, её стоит продублировать:

Таким простым способом созданный прифаб можно копировать, создавая большее игровое пространство и увеличивая уровни сложности. Для клонирования выполняется комбинация Ctrl+D.

Создание точки старта

При компоновке всех частей созданного проекта, иногда возникает вопрос с обратным прохождением уровней с определённой точки. Это так называемая точка старта, откуда игрок, может восстановиться и продолжить игру. Если не задать таких параметров, то предмет, например, в случаи падения с платформы, может падать бесконечно. Для её создания понадобится:

Объект Respawn

Закрепить созданную точку нужно с помощью скрипта:

Скрипт DieSpace

Тест созданной игры

В заключении можно выделить то, что созданный 2Д платформер работает. Здесь нет сложного сюжета, но представлены базовые возможности:

Четыре пути реализации
Существует четыре основных подхода, которыми могут быть реализованы платформеры. В порядке возрастания сложности, они таковы:



Кадр из игры Mega Man X. Видны границы ячеек и hitbox (зона поражения) игрока.
Примеры игр: Super Mario World, Sonic the Hedgehog, Mega Man, Super Metroid, Contra, Metal Slug, и практически все остальные платформеры 16-битной эпохи.

Как это работает.

Если предположить, что на карте нет наклонных и односторонних платформ, алгоритм несложен :

1. Последовательно разбить на шаги движение по осям X и Y. Если затем вы планируете ввести наклоны, начните разбивку с оси Х, в противном случае порядок не имеет большого значения. Затем, для каждой оси:

2. Найдите координату края, направленного вперёд (ведущего края). Например, при движении влево это координата Х левой стороны ограничивающего прямоугольника, при движении вправо – коорднината Х правой стороны, при движении вверх – координата Y верхней стороны и т. д.

3. Определите, с какими линиями сетки пересекается ограничивающий прямоугольник – так вы получите минимальное и максимальное значение на противоположной оси (т.е. при движении по горизонтали мы найдем номера вертикальных ячеек с которыми пересекаемся). К примеру, если вы двигаетесь налево, игрок пересекает ряды номер 32, 33 и 34 (то есть ячейки с координатами Y = 32 * TS, Y = 33 * TS, и Y = 34 * TS, где TS = размер ячейки).

4. Проследуйте дальше по линии ячеек в направлении движения пока не найдёте ближайшее твердое препятствие. Затем пройдитесь по всем движущимся объектам, и определите ближайшее препятствие среди них на вашем пути.

5. Минимальное из двух значений (расстояние до ближайшего препятствия и расстояние на которое вы собирались продвинуться изначально) и будет значением расстояния на которое мы передвигаем персонажа.

6. Передвиньте игрока на новую позицию. С новой позиции, повторите шаги, и так далее.

Наклоны


Наклоны (ячейки, на которые указывают зелёные стрелки) могут представлять определённую сложность, так как они по сути являются препятствиями, но при этом игрок всё же может частично входить в эти ячейки. Они также предполагают изменение Y координаты персонажа в зависимости от движения по оси X. Во избежание проблем, нужно сделать так, чтобы ячейка содержала параметр “floor y” каждой стороны. Если в системе координат обозначить левую верхнюю ячейку как , как показано на рисунке, тогда точка – это ячейка, расположенная чуть левее от персонажа (первая ячейка наклона); ячейка, на которой он стоит – точка , затем , и . Далее ячейки начинают повторяться, с новой точки и далее, а дальше спуск становится круче и состоит из двух точек и .


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

Для вертикального движения:

Односторонние платформы


Односторонняя платформа – такая платформа, на которой игрок может стоять и через которую, в то же время, можно пройти в прыжке. Другими словами, они считаются за препятствие, если вы уже находитесь на ней, и не считаются при любых других обстоятельствах. Предыдущее предложение играет ключевую роль для понимания алгоритма их поведения. Он модифицируется следующим образом:

Возможно, вам покажется хорошим подходом определять что произошло столкновение когда вертикальная скорость игрока имеет положительное значение (например, при падении). Однако, этот подход неверен: игрок может прыгнуть так, что он по факту пересечёт платформу, но до её верха не допрыгнет и, следственно, должен упасть вниз. В этой ситуации игроку всё равно следует проходить сквозь платформу, хотя вертикальная скорость будет положительной.

В некоторых играх имеется возможность “спрыгнуть вниз” с таких платформ. Способов задать такую возможность немного, но они все относительно просты. Например, можно на один кадр отключить односторонние платформы и убедиться, что вертикальная скорость равняется как минимум единице – так, на следующем кадре игрок окажется вне зоны соприкосновения. Или же можно задать исключительное условие, при котором игрок стоит на односторонних платформах и, при соблюдении этого условия, вручную перемещать игрока на пиксель вниз.

Лестницы (вертикальные)


Лестницы могут показаться сложными для реализации, но они попросту представляют собой другое состояние персонажа: будучи на лестнице, игроком игнорируется практически вся система столкновений, и вместо неё вводится новый набор правил. Обычно, ширина лестницы – одна ячейка.

Таким образом, возникает эффект моментального совмещения x-координаты игрока с лестницей. Для движения вниз с верхушки лестницы нужно переместить y-координату персонажа так, чтобы игрок оказался внутри лестницы. В некоторых играх для таких ситуаций вводится альтернативный хитбокс, отслеживающий позицию игрока в пределах лестницы. К примеру, в Mega Man, он представляет собой единичную ячейку, совпадающую с верхней ячейкой спрайта персонажа.

Покинуть лестницу можно следующими способами:

■ Игрок достигает верха лестницы. Здесь обычно включается особая анимация, при которой игрок перемещается на несколько пикселей вверх по оси Y и оказывается над лестницей в стоячем положении;

■ Игрок достигает низа висячей лестницы. В этом случае игрок попросту падает, хотя в некоторых играх это не допускается;

■ Игрок движется влево или вправо. Если нет препятствий, игрок сходит с лестницы в соответствующем направлении;

■ Игрок прыгает. В некоторых играх позволяется отпустить лестницу таким образом.

Будучи на лестнице, действия игрока ограничены движением вверх-вниз, а также иногда возможно атаковать.

Лестницы (наклонные)


Данный тип лестниц встречается редко. В основном, наклонные лестницы присущи играм серии Castlevania. Их реализация во многом совпадает с реализацией обычных лестниц, за некоторыми исключениями:

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

Движущиеся платформы


Для решения этой проблемы существует несколько путей. Рассмотрим такой алгоритм:

■ Перед тем как что либо сдвинуть на карте, задайте условие, при котором игрок считается находящимся на движущейся платформе. Пускай программа следит за тем, чтобы, например, нижний средний пиксель персонажа располагался ровно на один пиксель выше поверхности платформы. Если это условие соблюдается, сохраните указатель на платформу и её позицию в персонаж
■ Сдвиньте все движущиеся платформы на один шаг. Обязательно сделайте это перед тем, как будете двигать персонажей и другие объекты;
■ Для всех персонажей, стоящих на движущейся платформе, определите дельта-положение платформы, т. е. полное перемещение, совершённое ей по каждой оси. Затем, переместите персонажа в соответствии с этим значением;
■Передвигайте персонажей дальше как обычно.

Другие особенности


Есть игры, в которых применены гораздо более сложные и уникальные техники, и особенно в этом плане выделяется серия Sonic the Hedgehog. Эти приёмы выходят за рамки данной статьи, но могут послужить материалом для будущих.


Примеры: Worms, Talbot’s Odyssey

Как это работает

Склоны


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

Приведу в общих чертах алгоритм, изпользуемый в Talbot’s Odyssey:

■ Найдите растояние, на сколько нужно сместиться по каждой оси;
■ Шаги нужно проводить по каждой оси отдельно, начиная с той, на которой наибольшее смещение;
■ Для движения по горизонтали, ограничивающий прямоугольник игрока (AABB) нужно сместить на 3 пикселя вверх(чтобы он смог забираться на склоны);
■ Выполните проверку столкновений, сверяясь со всеми препятствиями и самой битовой маской, и определите, на сколько пикселей персонаж может продвинутся, прежде чем столкнуться с чем-либо. Передвиньте его на эту новую позицию;
■ Если движение шло по горизонтали, передвиньтесь вверх на столько пикселей сколько необходимо (обычно, не больше 3-х) чтобы компенсировать склон;
■ Если в конце движения хотя бы один пиксель игрока накладывается на препятствие, отмените движение по этой оси;
■ Независимо от исполнения предыдущего условия, примените алгоритм для второй оси.

В этой системе не проводится различий между движением вниз в результате спуска и в результате падения, поэтому вам может потребоваться счётчик кадров. Он определяет, сколько кадров должно пройти с момента последнего касания игроком поверхности пола, чтобы персонаж смог прыгнуть или сменить анимацию. В Talbot это значение равно 10-ти кадрам.

В этом способе используется векторный подход (линии и многоугольники) для определения границ области коллизии. Несмотря на сложность реализации, он набирает все большую популярность благодаря повсеместному использованию физических движков, таких как Box2D. Векторный способ обладает теми же преимуществами, что и битовая маска, но без большого расхода памяти и с использованием иного способа редактирования уровней.



Braid (редактор уровней) с видимыми слоями (наверху) и …полигонами (внизу)

Как это работает
Есть два основных способа этого достигнуть:
1. Движение и столкновения реализуйте способом похожим на битовую маску, но используя при этом многоугольники, чтобы вычислять отклонения и получать правильный наклон.
2. Используйте физический движок (например, Box2D)
Очевидно, второй способ более распространенный (хотя я подозреваю, что Braid первый), потому что он проще и позволяет делать различные вещи с динамикой в игре.
К сожалению, приходится быть очень внимательным, когда идешь этим путем, чтобы не превратить игру в обычный физический платформер.

Составные объекты

Этот подход имеет свои проблемы. Иногда бывает трудно определить, стоит игрок на полу (из-за ошибок округления), ударяется о стену или скользит вниз по крутому склону. При использовании физического движка трение может стать проблемой, если захотите усилить его у ног и ослабить по бокам.

Существуют различные способы решения этой проблемы, но наиболее популярным решением является разделение персонажа на несколько разных многоугольников: так, помимо туловища, у вас будет узкий прямоугольник для ступней и два узких прямоугольника для боков, еще один для головы или другая подобная комбинация. Иногда им придают коническую форму, чтобы избежать препятствий. У них разные физические свойства, и функции определения пересечений движка в данном случае используются для определения состояния персонажа. Для получения дополнительной информации могут быть использованы датчики (несталкивающиеся предметы, используемые только для проверки наличия перекрытий). К ним можно прибегнуть, чтобы определить достаточно ли близко к полу мы находимся для прыжка или персонаж упирается в стену и т.д.

Ускорение


Super Mario World (низкое ускорение), Super Metroid (среднее ускорение), Mega Men 7 (высокое ускорение)

Одним из факторов, влияющих на играбельность платформера, является наличие ускорения персонажа.

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

Как это работает

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

Два вида ускорения:
Среднее взвешенное : число (“a”) от 0 (без движения) до 1 (мгновенное ускорение).
Используйте это значение для вставки между заданной и текущей скоростью, а результат установите как заданную скорость.

vector2f curSpeed = a * targetSpeed + (1-a) * curSpeed;
if (fabs(curSpeed.x)

Добавочное ускорение: Мы определим, в каком направлении добавить ускорение (используя функцию sign, которая возвращает 1 если аргумент больше нуля и -1 если меньше), затем проверим, не вышли ли мы за рамки.

vector2f direction = vector2f(sign(targetSpeed.x – curSpeed.x), sign(targetSpeed.y – curSpeed.y));
curSpeed += acceleration * direction;
if (sign(targetSpeed.x – curSpeed.x) != direction.x)
curSpeed.x = targetSpeed.x;
if (sign(targetSpeed.y – curSpeed.y) != direction.y)
curSpeed.y = targetSpeed.y;

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

Когда персонаж натыкается на препятствие, лучше всего снизить его скорость до нуля.

Контроль прыжков

Существуют четыре основных способа управления прыжками:

Анимация и управление


Black Thorne, анимация персонажа замедляется перед выстрелом назад (кнопка Y)

Во многих играх анимация вашего персонажа будет проигрываться до реального выполнения требуемого действия, во всяком случае, в играх, основанных на резких движениях. Это разочарует игроков, поэтому НЕ ДЕЛАЙТЕ ЭТОГО! Вам следует ставить на первое место анимацию, когда речь идет о прыжках и беге, но если вам не все равно, ограничьтесь такой анимацией, чтобы само действие происходило независимо от анимации.

Плавное движение
Правильным решением будет выразить положение персонажей в целочисленных данных, так как движение становится быстрее и стабильнее. Но если вы будете использовать целочисленные данные для всего подряд, то в итоге получите рывки при движении. Для преодоления этого есть разные подходы. Вот некоторые из них:

· Используйте числа с плавающей запятой (тип float) для всех расчетов и хранения данных положения, и подводите итог в целых числах всякий раз, когда вы визуализируете изображение или рассчитываете коллизии. Быстро и просто, но при удалении от (0,0) начинает теряться точность. Это, вероятно, не имеет значения, если у вас очень большое игровое поле, но об этом следует помнить. В противном случае используется тип double.

· Используйте числа с фиксированной запятой для всех расчетов и положения и снова подведите итог в целых числах , когда визуализируете изображение или рассчитываете коллизии. Менее точный, чем float и с более узким диапазоном формат, но в этом случае точность всегда одна и та же, а на некоторых устройствах работа с ним протекает быстрее (особенно медленно работа протекает с числами с плавающей запятой на мобильных устройствах).

Смотрите наши видеоуроки и вы узнаете как сделать игру на Scratch.

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

  • сможете создать своего персонажа в Scratch;
  • узнаете как создать анимацию в Scratch;
  • научитесь использовать спрайты для Scratch;

Уроки по Scratch. Как создать свою первую игру на Скретч.

В этом видео мы создадим интерактивную игру “Охотники за привидениями”. В игре необходимо на время стрелять по привидениям и набирать баллы. Сколько баллов сможете набрать? Давайте проверим.

Уроки по Scratch. Делаем Гонки на двоих!

В этом видео мы создадим интерактивную игру “Гонки на двоих”. Зовите друзей, пора делать турнир! Кто приедет на финиш первым?

Уроки по Scratch. Создаем игру Star Wars или "Звездные войны"

Сегодня мы делаем игру по мотивам "Звездных войн", все необходимые спрайты вы найдете по ссылке.

Уроки по Scratch. Создаем игру "Minecraft головоломка"

В этом видео мы создадим игру "Minecraft головоломка". В игре нужно дойти до сундука за наименьшее количество шагов. Все необходимые спрайты вы найдете по ссылке.

Уроки по Scratch. Создаем игру "Among us". Часть 1

В этом видео мы создадим интерактивную игру Among us, немного похожую на всем известную "Мафию". Все необходимые спрайты вы найдете по ссылке .

Уроки по Scratch. Создаем игру "Among us". Часть 2

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

Уроки по Scratch. Как сделать игру Runner ("Раннер")

В этом видео мы создадим интерактивную игру Runner. Как долго вы сможете бегать от призраков? Необходимые на спрайты вы найдете по ссылке.

Уроки по Scratch. Создаем проект Paint 3D

В этом видеоуроке мы создадим проект Paint 3D. Это непростая задачка с множеством переменных и несколькими условиями. Повторяйте за нами и будьте внимательны!

Уроки по Scratch. Создаем мультиплеерную игру

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

Уроки по Scratch. Создаем игру Brawl Stars (Бравл Старс)

Почти все знают о такой популярной игре, как Brawl Stars. И сегодня мы покажем вам процесс создания этой игры в Scratch (Скретч). Спрайты для игры ищите по ссылке.

Уроки по Scratch. Как сделать игровое меню в Скретч

Каждая уважающая себя игра должна встречать своего игрока привлекательным меню! В этом видеоролике мы расскажем, как сделать такое меню самостоятельно.

Уроки по Scratch. Как сделать игру платформер за 15 минут

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

Уроки по Scratch. Как сделать Flappy Bird на Scratch

Flappy Bird — это популярная игра-платформер с птичкой. Раньше она была доступна только на мобильных телефонах, но мы с вами создадим ее в визуальной среде Скретч.

Плейлист видеоуроков постоянно дополняется, подписывайтесь на канал и следите за обновлениями. Наши видеоуроки по Scratch выходят на русском языке и полностью бесплатны.

Нужен наставник? Записывайтесь на онлайн-уроки программирования для детей в школе "Пиксель": онлайн-курс Scratch программирование для детей.

Введение

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

Большая часть таких игр является соревновательной по природе и цель игрока в основном сводится к набору наивысшего возможного количества очков перед тем, как его время закончится или выполнится другое условие проигрыша. Примерами игр "Три в ряд" могут служить Pokemon Puzzle League, Bejeweled, и недавний хит Candy Crush Saga.

Игра, которую мы будем делать

Я решил базировать нашу игру "Три в ряд", которую мы будем делать, на игре Pokemon Puzzle League:


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

Здесь дается демонстрация игры, над созданием которой мы будем работать в этих частях самоучителя:

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

Перед тем, как начать

Перед тем, как начать работать с этой частью самоучителя, вам нужно убедиться, что у вас установлена новейшая версия программы Construct 2 (C2). Когда я создавал оригинальную версию этой игры, я использовал версию 122, и если у вас установлена более новая версия программы, то все должно работать, как нужно. Также, если вы никогда еще не работали с программой C2, то вам нужно сначала обратиться к этому руководству в котором дается детальное описание основ пользования программой C2 и создания большинства различных типов объектов.

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

Итак, после того, как вы все подготовили для работы и имеете хорошее понимание программы C2, будем двигаться дальше!

Подготовка проекта

Перед тем, как начать работу над механизмом игры, нам нужно подготовить сам проект. Запустите C2 и следуйте следующим шагам:

И в конце нам нужно создать фон для поля, где будут появляться блоки.

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

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

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

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

Создание квадратного поля из блоков

В финальной версии игры блоки будут постоянно двигаться вверх, а снизу экрана будут выдвигаться новые блоки. Но пока нам нужно настроить базовую механику игры, поэтому мы просто создадим поле из блоков размером 8х8 и остановимся на этом.

Construct 2 Match-3 game tutorial

Также нам нужно сделать еще одну вещь перед созданием первого события: нам нужно создать переменную для объекта Блок (Block), которая указывает, какого он цвета

Создайте новую переменную для объекта Блок (Block), назовите ее Цвет (Color) и оставьте остальные настройки без изменений.

Construct 2 Match-3 game tutorial

Теперь мы создадим наше первое событие. Целью этого события является создание статичного поля из блоков в качестве теста:

Обе эти формулы в основном обозначают одно и то же. Сначала мы добавляем 2 к ширине блока (Block.Width), что создает буфер в 2 пикселя между соседними блоками для избежания ошибок во время определения столкновения. Затем мы умножаем это число на текущее значения индекса цикла "For" (loopIndex) и добавляем это значение к начальной позиции X (SPAWNX) или Y (SPAWNY). Также, мы отнимаем из значения Y, так как в C2 точка 0 на оси Y находится вверху игрового экрана, поэтому, уменьшая значение позиции Y, мы помещаем объект ближе к верху экрана.

Итак, что же выполняет это событие? Оно означает, что когда выполняется цикл по X и Y и значения их возрастают, изменяется позиция появления каждого из блоков, что в результате приводит к созданию квадратного поля из блоков:

Construct 2 Match-3 game tutorial
Construct 2 Match-3 game tutorial
Construct 2 Match-3 game tutorial

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

Вначале каждому блоку нужно придать значение цвета, используя переменную объекта "цвет" ("color"), созданную нами ранее. Для этого добавьте следующее Действие (Action):

Это присвоит блоку случайное (Random) значение цвета (Color) в диапазоне от 1 до 6. (Почему не с 1 до 7 объясненов описании функции Random .)

Ваша функция должна выглядеть так:

Construct 2 Match-3 game tutorial
Construct 2 Match-3 game tutorial
Construct 2 Match-3 game tutorial

Нам также нужно добавить систему, меняющую изображение блока, базируясь на его значении. Для этого мы добавим новую переменную объекта Блок:

Construct 2 Match-3 game tutorial

Теперь добавим новое событие:

В этой формуле сначала мы отнимаем 1 от значения цвета блока, так как это значение начинается с 0, а не с 1. Затем умножаем эту цифру на 3, так как каждый блок имеет 3 кадра анимации. И, наконец, добавляем 1 к этому значению, так как стандартное изображение блока является первым изображением в группе.

Давайте рассмотрим небольшой пример, где блок будет иметь значение цвета равное 4, с целью определить, какой кадр анимации он будет использовать. Сначала отнимем 1 от значения его цвета и получим число 3. Затем умножим его на 3, получив 9. И, наконец, добавим к нему 1, получив число 10. Это значит, что блок со значением цвета, равным 4 будет использовать 10-й кадр в качестве кадра по умолчанию и будет блоком фиолетового цвета с квадратом на нем.

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

Вот небольшая демонстрация того, как наша игра должна выглядеть на текущий момент: (возьми исходник программы здесь):

Щелкните мышкой для запуска демонстрации игры.

Если вы захотите самостоятельно продолжить работу над этой игрой, попробуйте поискать способ смены анимации блока, основываясь на событии "Мышь > Курсор мыши над объектом" ("Mouse > Cursor is over object"). Также вы можете попробовать использовать Поведение "Перетаскивание" ("Drag & Drop" behavior), чтобы манипулировать блоком, и попробуйте решить вопрос о том, что игрок пробует сделать с блоком, когда он начинает его перетаскивать или отпускает его.

Заключение

Спасибо за прочтение этой части самоучителя, где мы подготовили фундамент для нашей игры "Три в ряд". До встречи в следующей его части! Чтобы оставаться в курсе новостей используйте Facebook, Twitter, Google+, RSS или email.

Читайте также: