Создание игры в жанре TopDownShooter (урок 1)

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

Сообщение Создание игры в жанре TopDownShooter (урок 1)
» 14 мар 2014, 12:59

Всем доброго времени суток!

В этом цикле уроков вы научитесь создавать свою собственную игру в жанре TDS (Top Down Shooter, что в переводе означает "Шутер с видом сверху-вниз"). В качестве примера игры такого жанра можно привести небезызвестную игру Alien Shooter.

Что нам понадобиться:
  • Собственно, сам Construct 2 (можно использовать Free версию)
  • Сборник графики, который можно скачать тут

    SpritesForTDS.zip
    (234.82 КБ) Скачиваний: 441

  • Умение уверенно пользоваться компьютером

Ну что же, давайте начнем!
Как ни странно, но любое создание игр в Construct 2 начинается с открытия Construct 2. Далее, чтобы создать пустой проект, нужно открыть вкладку File (небольшая кнопка в виде логотипа Construct 2 в верхнем левом углу) -> New, с помощью клавиатуры можно нажать на сочетание клавиш Ctrl+N, это одно и тоже. В открывшемся окне выбираем New empty project (Новый пустой проект) и вас сразу перекидывает на только что созданный проект.

Изображение

Рекомендую сразу сохранить проект, чтобы если что его не потерять. Делается это нажатием на кнопку Save во вкладке File или сочетанием Ctrl+S. Также, начиная с этого момента, я крайне не рекомендую использовать кириллицу в любых местах Construct 2 (комментарии и некоторые другие вещи исключение).

Что мы видим:

Изображение

А мы видим 5-ть основных областей экрана:

  • Окно проектов (Projects)
  • Окно свойств (Properties)
  • Окно слоев (Layers)
  • Окно объектов (Objects)
  • Окно макетирования и редактирования событий (большое, пока что пустое, белое пространство в центре)
Остальное нас, на этом курсе, не интересует. Если вы чего-то не нашли на экране, то загляните на вкладку View и поставьте галочки на названиях недостающих окон.

Изображение

Сразу настроем основные параметры игры, такие как размер игрового пространства, авторство, тип полноэкранного режима и т.д. Чтобы открыть параметры (а точнее говоря свойства) проекта, выберите основную папку в окне Projects.

Изображение

После этого в окне Properties отобразятся все свойства данного проекта.

Изображение

Все настраивать не будем, только самое-самое основное:

  • Name — Название проекта. Я поставлю его "MyTDS" (без кавычек)
  • Pixel rounding — Округление позиции пикселей. Т.е. игра не дает картинке использовать нецелые координаты пикселей (напр., 200.123456 ...). Я поставлю On, в большинстве своих проектов я также использую On, что советую и вам.
  • Window size — Размер игрового окна. Я оставлю как есть (854x480).
  • Preview browser — Предварительный просмотр в браузере. Рекомендую поставить здесь Chrome (если есть) или NodeWebKit.
  • Fullscreen in browser — Тип полноэкранного режима в игре. В данном уроке советую поставить Off (совсем выключенный полноэкранный режим) или Letterbox scale. Это свойство определяет то, как будет выглядеть ваша игра на различных разрешениях/соотношениях экрана.
На этом пока со свойствами проекта все. Двигаемся дальше. Обратим взгляд на окно Layers, где увидим один единственный слой с названием "Layer 0". Для удобства давайте сразу переименуем его в "background", т.е. мы переименовываем слоя только для себя, чтобы не запутаться где что находиться.

Изображение

Создание игр в Construct 2 базируется на объектах. Объекты (их иногда называют по-другому: плагины) — это некоторые части игры, например, статичная картинка или текст, которыми можно манипулировать непосредственно в игре. Чтобы создать объект в Construct 2, нужно дважды кликнуть по пустому белому пространству (макету) или нажать правую кнопку мыши по, опять же, макету, и выбрать пункт Insert new object.

Добавим объект Tiled Background.

Изображение

Этот объект представляет из себя повторяющуюся картинку. Для добавления объекта выбираем его из этого списка и дважды кликаем по его иконке. Дальше, если объект видимый (например, Tiled Background — это видимый объект, т.е. он непосредственно на себе отображает какую-то информацию) то Construct 2 предложит выбрать место, куда именно будет помещен объект (на самом деле, это не существенно. В любой момент можно изменить свойства объекта (положение, размеры, угол и т.д.) ). Выбираем место и кликаем мышью. Появляется простой графический редактор:

Изображение

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

Изображение

Слева-направо:
  • Clear image — Полное стирание существующей картинки, размер остается прежним.
  • Load an image from a file — Загрузка картинки из графического файла (.png , .jpg и т.д.).
  • Save the image to a file — Сохранение (экспорт) картинки из Construct 2 в графический файл.
  • Set image export format — Задание настроек экспорта (сохранения) картинок из Construct 2 в файл.
  • Cut — Вырезать (в буфер обмена)
  • Copy — Скопировать (в буфер обмена)
  • Paste — Вставить (из буфера обмена)
  • Mirror — Зеркальное отражение (по горизонтали). Зажмите клавишу Shift, чтобы отразить всю анимацию (о том, что такое анимация поговорим позже)
  • Flip — Перевернуть (отразить по вертикали). Также, зажмите Shift, чтобы перевернуть всю анимацию.
  • Rotate 90° clockwise / anticlockwise — Повернуть изображение по/против часовой стрелке на 90 градусов. Зажмите Shift, чтобы повернуть всю анимацию.
  • Crop transperent edges — Функция сжатия картинки, за счет прозрачного пространства. Если зажать Shift, то будут сжаты все кадры анимации, а если зажать Ctrl, то сжатие будет происходить без "запасных" пикселей (т.е. при обычном нажатии на эту кнопку сжатие происходит с отступом в 1 пиксель от картинки, при зажатом Ctrl такого не будет - картинка будет сжиматься жестко до картинки).
  • Resize — Изменение размеров картинки с различными настройками.
  • Zoom in — Увеличить масштаб (приблизить).
  • Zoom out — Уменьшить масштаб (отдалить).
  • Zoom to 100% — Обычный масштаб (оригинальный масштаб картинки).
  • Toggle background brightness — Переключение заднего фона на светлый/темный цвет.

Изображение

Сверху вниз:
  • Rectangle select — Квадратное выделение.
  • Eraser — Ластик (стерка).
  • Pensil — Карандаш.
  • Brush — Круглая кисть.
  • Line — Рисование линий.
  • Rectangle — Рисование прямоугольников.
  • Fill — Заливка.
  • Color picker — Выбор цвета (пипетка).
  • Set origin and image points — Задание центра изображения и отметка точек на изображении (доступно только для объекта Sprite).
  • Set collision polygon — Настройка полигона столкновений ("маска коллизий") (доступно только для объекта Sprite).
Все в этом списке (за исключением последних двух) — все аналоги из простых графических редакторов (Paint, например).

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

После открытия картинка появляется в самом редакторе. Чтобы сохранить картинку у объекта, достаточно нажать на красный крестик (выход), картинка сохраниться автоматически. После всех этих манипуляций у вас должна быть примерно такой экран:

Изображение

Около объекта появились 8-мь квадратов + 1 внутри объекта. 8-мь внешних квадратов (для удобства, будем называть их "маркеры") предназначены для изменения размера объекта, другой 1-н нужен для изменения угла. Чтобы что-либо изменить, нужно навести курсор на маркер, зажать мышь и тащить маркер в сторону. Чтобы переместить объект, нужно схватить объект в любой месте (но не на маркере) и также переместить. Растянем задний фон земли на весь уровень (границы уровня отображаются черной линией). Вот примерно вот так (25% масштаб всего макета):

Изображение

Каждый объект имеет свое имя. Чтобы в будущем не запутаться, какой объект за что отвечает и зачем вообще нужен, объектам необходимо давать имена (также как и слоям). Чтобы изменить свойства объектов, нужно выбрать этот объект и изменить нужное свойство (в данном случае, имя).

Изображение


На забываем время от времени сохраняться.
Задний фон — это, конечно же, не игра. Чтобы создавать игру было проще и удобнее, создадим новый слой с именем "game", на котором и будят происходить игровые действия.
Особенность слоев: расположение слоев в общем списке имеет важную роль. Верхние слоя отображаются поверх нижних. Поэтому слой "game" должен находиться выше слоя "background", чтобы у нас сам игрок и противники отображались поверх земли, а не под ней (т.е. их не будет видно вообще):

Изображение

Пару слов об окне "Layers". Видите галочку и замочек возле названия каждого слоя? Галочка — это включение и выключение видимости у каждого слоя, т.е. можно временно отключить видимость отдельного слоя в окно редактирования (эта галочка на видимость слоя в игре не влияет). А замочек — это ограничение на выделение объектов на этом слое, т.е. если сейчас поставить замок на слой "background", то мы банально не сможем выделить объект "ground". Это невероятно удобно при редактировании игры с большим количеством слоев, иначе можно всегда бояться "кликнуть не туда".

Итак, давайте все-таки для удобства заблокируем слой "background", он нам уже не нужен. Выделим слой "game", чтобы все последующие объекты появлялись на нем. Создадим новый объект, на этот раз типа Sprite.

Изображение

Это будет игрок, поэтому загрузим картинку игрока (файл "player.png" из архива). После открытия картинки, прошу обратить внимание на кнопки, которые были недоступны при создании объекта TiledBackground, я говорю про кнопки "Set origin and image points" и "Set collision poligon". Если они до сих пор не доступны (серые и при нажатии никак не реагирут), проверьте, может быть, вы создали объект типа TiledBackground, а не Sprite.

ИзображениеИзображение

Должна быть примерна такая картина. Как видите, центр картинки (origin) расположился по центру игрока, для нашего случая это правильно, позже скажу, почему. Если посмотреть на маску столкновений (синие линии), то можно самому догадаться, что они делают — они предназначены для того, чтобы как бы сказать Construct 2, что является игроком, а что нет. Иными словами: например у нас в игре будет пуля, эта пуля летит в игрока, чтобы знать, попала ли пуля в игрока или нет, нужны эти линии — они как бы определяют область столкновения картинки с другими объектами.

Закрываем окно графического редактора и сразу переименовываем только что созданный объект в player. Лучше сразу выработать привычку "создал объект — поменяй имя". Насчет именования объектов: тут все на ваш вкус, лично я предпочитаю писать в стиле "верблюжьей нотации" (CamelCase, по-английски).
После всех действий, у вас получается примерно так:

Изображение

Вырисовывается уже набросок игры. Но это пока только статичная картинка, в этом можно даже убедиться, запустив игру. Для этого нужно перейти на вкладку "Home" и нажать на кнопку "Run layout". При этом откроется новая вкладка в Google Chrome или что-нибудь другое, что вы выбрали в свойстве проекта ("Preview browser").

Изображение

Как я уже сказал ранее, это всего лишь статическая картинка, нужно добавить ей, собственно, динамики. В данном случае я имею в виду добавить передвижение игрока. Делается это с помощью поведений. Поведения — это некоторые заготовленные заранее элементы игры, которые можно применить к какому-либо видимому объекту (например, объекту Sprite). Для того, чтобы применить поведение, нужно выбрать нужный объект (в нашем случае, игрока) и заглянуть в свойства и найти строку "Behaviors" и чуть ниже нажать на ссылку "Add/edit".

Изображение

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

Изображение

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

Изображение

Нажимаем на кнопку "Add" или дважды кликаем по иконке поведения и оно применится к объекту. Советую даже сейчас запустить игру и попробовать по-нажимать на стрелки на клавиатуре — персонаж должен начать движение.

Изображение

Описание свойств поведения 8-Direction:
  • Max speed — Максимальная скорость перемещения (в пикселях/сек.).
  • Acceleration — Ускорение перемещения (в пикселях/сек.).
  • Deceleration — Торможение перемещения (в пикселях/сек.).
  • Directions — Направления движения. Можно указать движение во все 8-мь сторон, можно в 4-е а можно только в 2-е (по вертикали или по горизонтали).
  • Set angle — Задание угла при движении.
  • Default controls — Стандартное управление персонажем. Т.е. персонаж передвигается только при нажатии стрелок на клавиатуре и больше ничем.
  • Initial state — Активность поведения по-умолчанию (по старту игры).
Можете смело по-экспериментировать со всеми значениями — помните, то, что вы усвоите самостоятельно, осознав на своем опыте, будет во много раз лучше, чем то, что скажут учителя.
Двигаемся далее.

Изображение

Добавим еще одно поведение для персонажа, а именно поведение ScrollTo. Это автоматическое перемещение камеры за объектом, у которого стоит это поведение. Примените его к персонажу и попробуйте по-ходить вокруг.

ScrollTo имеет только свойство "Initial state", аналогичное одноименному свойству из 8-Direction.

Также добавьте поведение "BoundToLayout" — это поведение не позволит персонажу выйти за границы уровня. Это поведение имеет одно свойство "Bound by" (чем именно сталкиваться), из которого можно выбрать 2 пункта:
  • Origin — Объект не будет выходить за пределы макета, ограничением будет его центр изображения выходит (помните, origin, который ставиться в графическом редакторе? Это одно и то же).
  • Edge — Объект не будет выходить за пределы макета, ограничением будет его стороны (это как раз те синие линии (маска столкновений), которые использовались в том же графическом редакторе).

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

До этого мы работали в режиме редактирования макета (layout), чтобы создавать и редактировать события нужно перейти на соответствующую вкладку, у меня это вкладка с названием "Event sheet 1" (Таблица событий). Если у вас нет этой вкладки, то найдите ее в окне Projects в папке Event sheets и дважды кликните по надписи. Также, можно сразу переименовать название таблицы событий, также найдя в окне Projects и кликнув один раз, появиться окно редактирования имени.

Изображение

После перехода на эту вкладку у вас будет чистый лист.

Изображение

Как подсказывают разработчики Construct 2, нам нужно создать событие. Дважды кликаем по пустому месту или кликаем на правую кнопку мыши и выбираем "Add event" или нажимаем на ссылку "Add event" вверху слева.

Изображение

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

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

"При старте игры" — это системное (общее) событие, которые не относиться к какому-либо объекту конкретно. Поэтому найдите условие On start of layout в списке условий объекта System.

Изображение

Должно получиться вот так. Теперь у нас есть условие, но без действия. Добавить действие к условию можно нажав на ссылку "Add action" справа от условия или с помощью правой кнопки мыши вызвать контекстное меню и найти там "Add another action" (кстати, кликать нужно не по самому условию, а немного левее, по событию).

Изображение

Добавляем действие. Поскольку мы хотим сделать нашего персонажа полупрозрачным, то поэтому создаем действие к самому персонажу (т.е. заходим не в папочку System, а к персонажу — объекту player). Ищем в списке всех событий действие Set opacity (Задать прозрачность) — это действие, собственно, задает прозрачность объекта от 0 до 100, где 0 — это полностью прозрачный объект, а 100 — полностью непрозрачный.

Изображение

Меняем значение на 50 (полупрозрачный) и нажимаем Done. Если сделали все правильно, то можно запустить игру и посмотреть на результат:

Изображение


Изображение

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

После добавления снова вернемся к событиям. Создайте новое событие (тут познается грань между понятием событие и условие: событие — это одно или несколько условий + действие. Забегая немного вперед скажу, что несколько условий в одном событии образуют незримое условие И, иными словами: если сделать условие "Если игрок нажал на кнопку мыши" и к этому условию добавить еще одно "Если у персонажа достаточно патронов в обойме", то действие будет выполнятся только в том случае, когда будут выполняться два условия одновременно (в данном примере — игрок нажал на кнопку мыши и у персонажа есть боеприпасы)).

Итак, создайте новое событие, с условием "System -> Every tick". Это событие будет срабатывать каждый тик игры, т.е. постоянно. Далее создайте действие для персонажа: "player -> Set angle towards position". Это действие повернет персонажа лицом на определенные координаты. Мы создаем TDS, поэтому лучше сделать так, чтобы персонаж всегда смотрел прямо на курсор. Чтобы использовать текущие координаты мыши, существуют выражения. Выражения — это определенные свойства, переменные или константы других объектов, которые можно использовать из других мест. Например, у объекта Mouse есть выражения X и Y, которые возвращают при их вызове текущее положение курсора относительно игры.

Чтобы направить персонажа к определенным координатам, нужно указать координаты по X и по Y. В эти поля ввода вставляем выражения Mouse.X и Mouse.Y соответственно.

Изображение

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

Давайте "научим" персонажа стрелять. Для этого в игру добавляем новый объект типа Sprite, загружаем в него изображение bullet.png из архива и добавляем поведение Bullet (Пуля), об именовании объектов также не забываем. При этом, если расположить пулю недалеко от самого персонажа и запустить игру, то можно заметить, как пуля летит сама по себе.

Чтобы такого не было создайте событие On start of layout, с которым мы познакомились ранее, и добавьте к нему действие bullet -> Destroy, это действие удалит пулю сразу же на старте уровня.

Теперь добавим событие при клике на мышь. Также добавляем событие, условие берем из объекта Mouse. Чтобы обрабатывать клик мыши, есть несколько условий, но для этого примера мы возьмем условие On click. В его настройки можно ничего не трогать, это настройка каким именно образом должен кликнуть игрок, чтобы условие сработало (какая кнопка должна быть нажата и каким именно кликом).

Добавляем действие player -> Spawn another object, это создаст готовый объект в игре, причем можно сразу выбрать слой и место появление объекта. В качестве создаваемого объекта выберем пулю, в качестве слоя можно написать номер слоя (он отображается справа от имени слоя, в окне Layers) или имя слоя (в кавычках, обязательно). Пусть пули появляются на слое "game". Третье поле ввода (Image point) оставим на значении 0.

Изображение


Изображение

Запустим игру — посмотрим на сделанное. При клике персонаж должен выстреливать пулей, которая летит по прямой.

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

  • 1. Создаем событие bullet -> Is on screen (условие срабатывает, если пуля находится на экране)
  • 2. Нажимаем правой кнопкой мыши по условию и выбираем пункт "Invert". Это функция инвертирования условия, т.е. условие теперь будет срабатывать наоборот. Иными словами, мы инвертировали условие Is on screen и теперь оно будет срабатывать, когда пуля находится за пределами экрана.
  • 3. Добавляем действие bullet -> Destroy. Это удалит пулю, которая вылетела за пределы экрана.

Изображение

Что за TDS без противников? Это ведь не TDS тогда будет вообще. Добавим противников в игру, а именно — призраков. Как уже делали ранее, создаем объект типа Sprite, загружаем картинку (ghost.png) и сохраняем на слое "game" с именем ghost.

Сделаем максимально просто интеллект у противников: он просто будет двигаться к игроку. Для этого применим поведение Bullet к призраку, и установим свойство Speed по-меньше, например, на 50.

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

Добавляем действие призрака: ghost -> Set angle of motion. Это задание угла полета пули, в нашем случае призрака. Так как тут нужно указывать угол, то нам нужна узнать угол между призраком и игроком. Осуществляется это с помощью вот такого выражения:
angle(ghost.X,ghost.Y,player.X,player.Y)
Давайте поясню: angle() — название выражения (а если быть точным, функции), в котором указываются четыре параметра. Параметры: angle(x1, y1, x2, y2), где x1 и y1 — это координаты первого объекта, а x2 и y2 — это координаты второго.

Изображение

Таким образом, если запустить игру, то призрак начнет движение прямо на нас. Также попробуйте создать несколько призраков: зажмите кнопку Ctrl и с зажатой клавишей перетащите призрака или нажмите на правую кнопку мыши и нажмите на пункт Copy, затем в другом месте также нажмите на ПКМ и выберите Paste.

Изображение

Теперь сделаем призраков убиваемыми, добавим им жизни. Для этого выделяем любого призрака и смотрим на окно свойств (Properties). Ищем строчку Instance variables (Приватные переменные) и нажимаем на синею ссылку. Появится довольно знакомое окно (похожее на окно-список всех поведений объекта), кликаем на + и появляется меню добавления переменной.

Изображение

Все интуитивно понятно, Name — название переменной (желательно писать без пробелов, используя, опять же, верблюжью нотацию), Type и Initial value — тип переменной и ее начальное значение. Text — строковый тип, в котором можно хранить различную текстовую информацию; Number — числовой тип данных, может хранить как целые числа (-50, 999, 123456789, -1), так и дробные числа (2.5 , 123.456 , -555.055). Количество здоровья у призрака — это цифровой тип данных, поэтому выберем его. При желании, можно написать краткое описание, для чего нужна эта переменная (Description).

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

  • Создаем новое событие с условием bullet -> On collision with another object -> Указываем в качестве объекта призрака
  • Создаем действие ghost -> Subtruct from -> Указываем переменную health (она по-умолчанию уже указана) и оставляем в качестве вычитаемого 1
  • Также добавляем действие уничтожения пули: bullet -> Destroy.
  • Создаем новое событие с условием ghost -> Compare instance variable -> Выбираем health, сравнение = Equal to и последний параметр 0. Это условие будет срабатывать, если здоровье у призрака будет равное нулю.
  • Добавляем действие ghost -> Destroy. Для удаления призрака, при его смерти.

Изображение



Дополнения к уроку.
Дополнение #1 — Пули появляются на голове персонажа

При клике мыши в событиях создается пуля в нулевом Image point'е, т.е. в центре объекта. Для того, чтобы сделать выстрел из оружия, нужно открыть графический редактор, перейти на инструмент "Set origin and image points" и в окне "Image points" добавить новую точку с помощью кнопки +.

Изображение

Расположите квадратик прямо на дуле оружия, можете переименовать точку и запомнить ее название/номер. Затем перейдите к действию, где создается пуля и измените последний параметр, который указывает, где создается пуля, и измените ее на только что созданную точку (image point). Причем, если вы указываете название точки, то необходимы кавычки, если номер — то без.

Дополнение #2 — Бесконечное появление призраков

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

  • Создадим новое событие System -> Every X Seconds -> Зададим промежуток, например, на 3.0 секунды
  • Добавим действие System -> Create object -> Объектом указываем призрака, в качестве слоя "game", в качестве координат параметры: X — random(LayoutWidth) ; Y — random(LayoutHeight) .
  • random(x) — генерирует случайное число в диапазоне (0; x) .
  • Выражения LayoutWidth и LayoutHeight возвращают ширину и высоту уровня соответственно.
Для большей сложности игры, можно скопировать это действие в условие уничтожения призрака, тогда новое привидение будет появляться не только по времени, но и при смерти любого другого.

Изображение


Дополнение #3 — Смерть персонажа

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

Изображение


Домашняя работа

Внимание: домашнее задание здесь только для ознакомления и для самообучения. Отсылать его никому не нужно.

В домашнюю работу входят задание, суть которого в реализации исходника, включающего:

  • Задний фон, объект с поведением 8-Direction; объект не может выйти за пределы уровня и камера следит за этим объектом.
  • Возможность стрельбы; убиваемого противника с определенным количеством здоровья.
  • Смерть персонажа с определенным количеством здоровья; добавление эффекта попадания пули в противника (с помощью поведения Flash); добавление твердого блока, через который персонаж не может пройти (с помощью поведения Solid и изображения steelBlock.png)
Аватара пользователя

Игродел
Сообщений: 226
Я тут с 11 фев 2013
Откуда: Россия, О. Сахалин
Skype: Seryiza
Репутация 184 [ ? ]

Сообщение Создание игры в жанре TopDownShooter (урок 1)
» 15 апр 2014, 15:58

ссылка на продолжение урока viewtopic.php?f=4&t=2531
Аватара пользователя

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



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

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

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

Наверх