Разрушаемый ландшафт construct 2

Разрушаемый ландшафт construct 2

Объект «Тайлмэп» (тайловая карта) позволяет проще создавать игры, основанные на тайлах. Тайлы — это отдельные строительные элементы-изображения, которые могут быть использованы повторно.

Рекомендованные настройки.
При добавлении объекта Tilemap Construct 2 может предложить вам рекомендованные установки для основанных на тайлах играх. Это Point sampling (поточечная выборка, простой низкоресурсоемкий способ выбора цвета пиксела на основе выбора одного из текстурных пикселей (текселей)), Pixel rounding (Округление пиксела), установленное в положение «да», scalefullscreen mode (полноэкранный режим) = Letterbox integer. Настоятельно рекомендуется использовать эти установки во избежание появления швов между и вдоль тайлов. Швы могут возникнуть в результате масштабирования дисплея или скроллинга (например, скроллинг половины пути между пикселами и остановка в координате 100.5 или использование нецелочисленного метода масштабирования леттербокса (non-integer letterbox scale), который может принимать значения на подобии 1.7х. Принятие рекомендованных настроек помогает избежать проблемы появления швов.

Изображение для объекта Tilemap.
Изображение, используемое для объекта Tilemap называется tileset (тайлсет, набор тайлов). Это изображение, которое содержит каждый отличающийся тайл. Помимо тайлов в карте могут быть также опционально добавлены отступы от края и отступы между тайлами. Тайлсет появляется на панели Tilemap Bar после выбора объекта, которая позволяет вам выбрать какие тайлы будут использованы для того, чтобы отрисовать этот объект.

Столкновения.
При тестировании столкновений с объектом пустые (стертые) тайлы будут считаться как не участвующие в столкновении. Остальные считаются как участвующие в столкновении. Настраиваемый многоугольник столкновений может быть установлен на отдельном тайле путем щелчка на кнопке Edit tile collision polygon (изменить многоугольник коллизий) или двойной щелчок на таиле на панели тайловой карты. Обратите внимание, что многоульник коллизий не может быть полностью уничтожен на существующем тайле. Для уничтожения многоугольника необходимо стереть тайл.
Если вы хотите иметь тайлы, которые видимы, но не участвуют в расчете столкновений, то используйте два объекта тайловых карт, наложенных друг на друга. Тестируйте столкновения только для верхнего объекта и сотрите все тайлы, которые не должны участвовать в столкновениях. Эти тайлы будут расположены на нижней тайловой карте (которую вы не выбрали для расчета столкновений), поэтому они будут видимы, но интактны.

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

Ненадлежащее использование объекта.
Карта тайлов не подходит для использования больших изображений. Тайловая карта рисуется тайл за тайлом, но может оптимизировать процесс, если есть зоны с повторяющимися тайлами. Если вы вставите большое изображение в объект Тайловой карты и затем отпечатаете на ней сетку тайлов для того, чтобы отобразить большое изображение, вы не получите никакой оптимизации. Если изображению необходима сетка в 10 на 10 тайлов для того, чтобы быть выведенным на экран, то это потребует 100 обращений «нарисовать объект». Одно изображение или объект Tiled Background потребует для сравнения всего 1 такое обращение. Таким образом, карта тайлов должна использовать только в том случае, если вы собираетесь интенсивно использовать ее свойства повторного употребления ее тайлов в ходе прорисовки.

Читайте также:  Чем можно обтянуть беседку

Свойства объекта Tilemap.

1. Image — нажмите на ссылку Edit (редактировать) для того, чтобы изменить исходное изображение, на основе которого тайлы будут отрисованы.
2. Initial visibility — выбирает, будет ли объект видимым или нет при старте программы.
3. Tile width/Tile height — размер тайлов в карте тайлов в пикселах. Рекомендуем использовать квадратные тайлы с длиной ребра, равной степени 2 (16*16, 32*32. )
4. Tile X offset/Tile Y offset — отступ в пикселах верхнего левого тайла от верхнего левого угла загруженного изображения. Обычно устанавливать отступ не требуется, свойство предоставляется в большей степени для совместимости с уже существующими картами тайлов, которые были нарисованы с отступом от края изображения.
5. Tile X spacing/Tile Y spacing — отступ в пикселах между тайлами в общем изображении. Обычно, устанавливать это значение не требуется. Свойство необходимо для совместимости с картами, которые были отрисованы с отступами между оттделььными тайлами.

Условия объекта Tilemap.

1. Compare tile at — сравнивает идентификатор тайла на заданной позиции в карте.
2. Compare tile state at — проверяет тайл на заданной позиции на предмет наличия переворота или поворота относительно нормального положения.

Действия объекта Tilemap.

1. Download — вызывает сохранение данных текущей карты из выражения TilesJSON как JSON файл. Это может быть полезно для встроенных редакторов уровней.
2. Load — загружает текущие тайлы из строки данных JSON из предыдущего использования выражения TilesJSON.
3. Erase tile — стирает тайл на заданной позиции.
4. Erase tile range — стирает прямоугольную зону тайлов на карте.
5. Set tile — устанавливает заданный по идентификатору тайл на заданную позицию. Опционально тайл может быть перевернут или развернут.
6. Set tile range — как и предыдущее, но устанавливает прямоугольную область тайлов.
7. Set tile state — устанавливает перевернутое или повернутое положение для заданной позиции на карте. Идентификаторы тайлов не меняются.
8. Set tile state range — то же, что и предыдущее, но для прямоугольной области, содержащей группу тайлов.

Выражения объектов Tilemap.

1. TilesJSON — возвращает данные о тайле в JSON формате, который может быть в дальнейшем снова загружен при помощи действия Load. Обратите внимание, что это выражение отличается от встроенного выражения AsJSON, которое возвращает полное состояние объекта (включая позицию, размер, поведения и прочее), в то время как TilesJSON возвращает только данные тайла.
2. PositionToTileX(x)/PositionToTileY(y) — конвертирует координаты лэйаута в координаты карты тайлов. Это может быть использовано для получения позиции мыши над тайлом.
3. SnapX(x)/SnapY(y) — осуществляет привязку Х или У координаты лэйаута к ближайшему тайлу. Также возвращает координаты лэйаута, но выровненные по ближайшему тайлу в карте.
4. TileAt(x, y) — возвращает идентификатор тайла на заданной позиции в карте. Обратите внимание, что позиция будет дана в координатах карты тайлов, а не в общих координатах лэйаута. Если тайл в заданной позиции пуст (был стерт), то выражение возвращает -1.
5. TileToPositionX(x)/TileToPositionY(y) — конвертирует координаты тайла в координаты лэйаута. Это может быть использовано для установки спрайта сверху данного тайла.

Чтобы было более красиво, поставьте размер тайл’а на маленький (с 5×5 и выше), и не забудьте отредактировать код. А также пуля ВСЕГДА должна быть на как минимум один пиксель меньше тайл’а.
Все готово. Оставляйте свое мнение, говорите пожелания и улучшения системы под темой. Я все запишу 🙂
Исходник проекта:

Читайте также:  Схема цветника вдоль дорожки

(Зажмите пробел чтобы стрелять как из пулемета)
(Нажмите Enter чтобы перезапустить)
(А также в этом исходнике размер тайл’а равен 5)

Источник статьи: http://c2community.ru/forum/viewtopic.php?t=5416

Урок «Разрушаемый ландшафт»

Данный урок рассчитан на опытных пользователей программы Construct. Прочитав его, вы научитесь работать с объектом Canvas и создавать с помощью него разрушаемый ландшафт, который потом без труда сможете использовать в своих играх. Также урок будет очень полезен тем, кто давно хотел создать игру, похожую на Worms.

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

Добавляем объект Canvas и в его редакторе изображения рисуем какой-нибудь ландшафт, например, этот:

Добавляем к объекту Canvas атрибут Solid.

После этого создаём спрайт, который будет маской взрыва. То есть, грубо говоря, это и будет форма, которая будет уничтожаться на ландшафте. Я использовал обыкновенный круг (создайте новый спрайт — круг). Для этого круга мы добавляем эффект Erase и поведение Mouse и выставляем галочку на пункте Invisible on start.

После этого переходим в редактор событий и создаем вот такие события и действия:

Это означает, что при нажатии левой кнопки мыши Canvas будет добавлять в себя спрайт, на котором стоит эффект Erase (Стирание), то есть вычитать из себя его, после чего Canvas «обновляется» и остаётся вырезанный кусок на ландшафте.

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

Добавляем бомбе поведение Physics и ставим галочку в свойствах в пункте Gravity (Гравитация).

В редакторе событий добавляем, что при нажатии правой кнопки мыши создаётся объект бомба с координатами mouseX и mouseY. У вас должно получиться вот такое событие:

А теперь создадим следующие событие — при соприкосновении бомбы и ландшафта, бомба будет создавать спрайт вычитания ландшафта. Также не забудьте создать действие, чтобы при соприкосновении бомбы с ландшафтом, бомба уничтожалась, а иначе бомба будет падать, уничтожая ландшафт до самого низа. Также нужно добавить несколько действий для объекта Canvas, а именно Update collision mask и Paste Sprite into canvas.

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

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

Источник статьи: http://scirraconstruct.ru/guide/articles/misc/urok-razrushaemyj-landshaft/

Генерация ландшафта с видом сверху на Construct 2

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

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

Бонус: в конце статьи пример бесконечного ландшафта

В итоге, 2D генерация ландшафта, в самом простом варианте, будет выглядеть так:

Все зависит от количества кадров, которые будут помещены в Sprite.

Графика

Для выполнения этого урока шаблоны не нужны. Если позже захочется как-то разнообразить игру, вы можете нарисовать что-нибудь с помощью графических редакторов или в самом Construct 2.

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

Читайте также:  Дизайн проекты летней веранды

Размер холста и экрана: создаю новый проект —> нажимаю на холст —> в левой основной панели напротив Layout Size ставлю 640, 384 —> в той же панели ниже нажимаю View —> напротив Window Size пишу 640, 384

Теперь нужно загрузить объект, внутри которого будет меняться анимация.

Добавление объекта: правой кнопкой мыши нажимаю на холст —> Insert new object —> Sprite —> Insert —> нажимаю на холст, чтобы открылся редактор изображений —> нажимаю в верхней части редактора на Resize —> ставлю размер 32х32 —> OK —> в левой части редактора выбираю Fill —> набираю цвет в отдельном окошке Color Palette —> закрашиваю квадрат —> в отдельном окошке Animation frames нажимаю правой клавишей мыши на закрашенный кадр и выбираю Duplicate —> выбираю более темный цвет и закрашиваю им квадрат —> таким образом получаю шесть кадров (от 0 до 5) —> закрываю редактор без сохранения

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

Изменение скорости анимации: открываю редактор изображений —> в отдельном окошке Animations нажимаю на Default —> в левой основной панели напротив Speed ставлю 0 —> закрываю редактор без сохранения

Если не поставить скорость анимации на 0, то результат будет таким:

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

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

После этого я расставляю объекты по карте. Копировать их можно и через правую кнопку мыши, а потом вставлять, но быстрее это сделать горячими клавишами*. Я постоянно использую их.

Заметка*: Ctrl + C обозначает «копировать», а Ctrl + V обозначает «вставить». Для приближения и отдаления экрана я использую Ctrl и колесико мыши, а для возвращения на шаг назад Ctrl + Z.

Сетка и копирование объектов: в верхней основной панели нажимаю View и закрепляю панель с помощью стрелок вверху справа —> в Snap to grid и Show grid ставлю галочки —> в ячейках области Grid size ставлю 16 и 16 —> расставляю квадраты на холсте с помощью горячих клавиш

Механика

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

Перехожу в Event sheet и прописываю случайность кадров.

(событие) Изменение кадров: перехожу во вкладку вверху под названием Event sheet —> нажимаю правой клавишей мыши на пространство —> Add event —> System —> Next —> On start of layout (пролистываю вниз) —> Done

(действие) Изменение кадров: напротив события нажимаю Add action —> зеленый квадрат —> Next —> Set frame —> Next —> в отдельном окошке Object with expressions выбираю System двойным нажатием —> листаю вниз и дважды нажимаю на random —> в появившейся надпись random(Range) вместо Range вписываю 6, получается ‘random(6)’ —> Done

Запуск проекта

Теперь можно запустить проект и проверить его работоспособность.

Все работает. Размер квадратов может быть больше или меньше, как может быть любой и графика.

Например, здесь я добавила несколько голубых квадратов:

Бонус

А можно сделать бесконечную генерацию ландшафта с помощью квадрата 16х16:

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

Источник статьи: http://zen.yandex.ru/media/id/5fbf8d15001983015984bbde/generaciia-landshafta-s-vidom-sverhu-na-construct-2-5fe9f85f68ba1a4d96529a5a

Оцените статью