Вторник, 14 Августа 2018, 21:14

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [309]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [123]
Статьи о программах для создания игр, уроки и описания.
Софт [27]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [4]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [81]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [63]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Вам хотелось бы стать модератором GcUp.ru?
Всего ответов: 1990
Главная » Статьи » Создание игр

Платформер-экшен в Scirra Construct для начинающих (часть 7)
Итак, в прошлой части мы научили врага стрелять. Но, как вы заметили его пули летят с правой части окна, хотя мы его ещё не видим, да и вообще пули, как ГГ так и врага никак не взаимодействуют с уровнем(летят сквозь препятствия как призраки какие-то). Т.е нам нужно сделать чтобы при прикосновении пуль(и ГГ и врага) к уровню (нашим «холмам»), пули удалялись. Надеюсь после всего того что мы сделали, вы сможете это сделать самостоятельно(попробуйте сделать это сами, а если не получится, то читайте дальше). Создаём событие, выбираем пулю ГГ, дальше выбираем On collision with another object (при столкновении с объектом) и в следующем окне выбираем нужный объект, т.е наше препятствие. Жмём финиш. Создаём действие к этому событию, выбираем пулю ГГ, а потом Destroy(уничтожить). Мы сделали такое событие: если пуля коснётся препятствия, то пуля уничтожится:



Тоже самое сделайте для пули врага. Теперь при запуске игры мы видим соответствующие изменения. Но, как говорилось ранее - пули врага летят в нас тогда, когда самого врага мы ещё не видим. Создаём событие, выбираем пулю врага, дальше выбираем Object is-on screen?(объект в пределах экрана?). Инвертируем это событие (ПКМ -> Invert Condition), тем самым мы создали событие «если объект «пуля врага» находится вне экрана то…». Просто скопируйте действие удаления пули врага с предыдущего события (зажали Ctrl и перетащили действие вниз). Теперь получается что пока мы не увидим врага на экране, мы не увидим его пуль:



Лучше сделать тоже самое и с пулей ГГ, потому что при выстреле пуля летит бесконечно в никуда(если она не дотронулась до препятствия), а это нагружает систему:



Теперь нужно сделать взаимодействие пуль с самими ГГ и врагом, но для начала нужно дать каждому из них некоторое количество здоровья, что мы сейчас и будем делать.
Итак, здоровье(жизни) будут хранить приватные переменные. Добавим ГГ приватную переменную с именем live (live от англ. – жизнь). Жмём по ГГ и слева в свойствах ищем Private Variables(приватные переменные), жмем по плюсику, а потом по Add / Edit(добавить / редактировать):



Откроется окно «Менеджер приватных переменных», жмем по зеленому плюсу в левом нижнем углу этого окна, откроется еще одно окошко. В графе Name пишем «live», а в Initial – количество жизней, пускай будет 10:



Жмём ок, и Done. У ГГ появится приватная переменная live со значением 10. Теперь нам нужно вывести количество здоровья на экран. Для этого добавляем новый объект Text (следим чтобы он был на слое где и первый наш текст) и называем его live, размещаем где хотим, например в правом верхнем углу, меняем настройки текста по желанию (как мы делали это с пулями). Чтобы текст отображал жизни переходим в редактор событий, ищем событие Always(всегда) и добавляем действие. Выбираем текст live, дальше Set text(установить текст), и пишем: "Здоровье: " & GG('live'):



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



При запуске:



И теперь нам осталось уменьшать значение этой переменной на один при каждом попадании в ГГ пули врага. Для этого создаём событие «Если пуля врага дотронится до ГГ то …». И добавляем действие удаления пули врага, добавляем ещё одно действие: выбираем ГГ, дальше Subtract from value(отнять от переменной). Дальше в графе Private variable выбираем live (должо быть уже выбрано), а в Value пишем 1:



Мы сделали так: если пуля врага дотронится до ГГ, то пуля уничтожится и от переменной live отнимится один:



При запуске игры мы увидим что всё работает, но жизни у ГГ уходят в минуса (-1, -2…), а так конечно не должно быть. Нужно чтобы что-то происходило когда у ГГ заканчиваются жизни. У нас это будет исчезновение ГГ, и появление такой надписи:



И через некоторое время переход на другой Layout. Создаём событие, выбираем ГГ, дальше выбираем Compare a private variable(сравнить приватную переменную). В графе Private variable выбираем переменную, которую нужно сравнить с каким-либо значением, т.е у нас это live. В графе Comparison выбираем один из вариантов сравнения (Equal to – равно, Not equal to – не равно, Less than – меньше чем, Less or equal – меньше или равно, Greater than – больше чем, Greater or equal – больше или равно). Нам нужно «меньше или равно» (Less or equal). В графе Value пишем значение с которым нужно сравнить переменную – оставляем ноль:



Мы создали событие: если переменная live меньше или равна нулю, то выполнить нужные действия. Сейчас давайте добавим в уровень наш спрайт с надписью «Вы проиграли» (см. спрайт выше). Добавьте его в слой с обоими текстами(помним что этот слой движется за экраном), и размещаем его примерно по середине уровня и делаем невидимым при старте(Invisible on start в свойствах):



Назовите его You_lose(You_lose от англ. – Ты проиграл). Теперь добавим новый Layout. Справа во вкладке Project(проект), жмем ПКМ по Layouts, и выбираем Add layout. Появится новый Layout:



Переименуйте его в «Menu»(позже мы будем делать меню smile ). И последнее, нам нужно добавить на уровень объект Wait(ожидание), в списке объектов выбираем Wait:



Теперь возвращаемся к последнему созданному событию(переменная live меньше или равна нулю). Создаём действие, выбираем ГГ, и дальше Destroy(уничтожить). Еще одно действие, выбираем basisGG(основа ГГ) и тоже уничтожить:



Т.е получается что если жизней меньше или равно нулю, то уничтожить ГГ(и его основу). Добавляем действие, выбираем You_lose, дальше Set visible(установит видимость), и дальше в графе Visibility выбираем Visible(видимый). Получается что если не осталось жизней, то сделать спрайт You_lose видимым. Создаем под-событие к этому событию (New sub event), выбираем объект Wait и дальше Delay (ms) (задержка)и пишем 3000(3 сек.):



В событиях:



Создаем действие к этому под-событию, выбираем объект System(система) и дальше Go to layout(перейти в layout). Дальше в графе Layout пишем имя нужного layout’а в кавычках, в нашем случае “Menu”. Остальные поля не трогаем и жмем финиш:



В событиях:



Это можно прочитать так: Если жизней меньше или равно нулю, то ждем 3 секунды и переходим в меню. При запуске игры мы увидим, что если жизней ноль, то ГГ пропадет, появляется надпись «Вы проиграли» и через 3 секунды переходим в меню(пока это белый экран, потому что в меню мы еще ничего не делали).
Все, теперь наш ГГ стал смертным, но враг-то, зараза бессмертный, но ничего, мы то в этой игре, можно сказать Боги, и сейчас превратим врага в смертное существо. Итак, добавляем врагу приватную переменную «Enemy_live»(Enemy от англ. - враг). Пусть жизней у него тоже будет 10. Теперь создаем событие «если пуля ГГ дотронится до врага, то пуля уничтожится» (ну теперь – то уж вы точно сможете сделать это самостоятельно smile ):



И добавьте этому событию, действие: отнять один у переменной Enemy_live по аналогии с тем, как мы делали это с жизнями ГГ, только теперь при создании действия выбираем врага(т.е тот объект, который содержит нужную переменную). А дальше также, Subtract from… В итоге:



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



При запуске игры, немного постреляв во врага, он исчезнет. Вот и всё, для изменения количества жизней (и врага и ГГ) просто изменяйте значения соответствующих переменных.
Вот исходник того, что получилось. Продолжение следует...
Категория: Создание игр | Добавил: dilovar50 (28 Апреля 2013) | Автор: Давлятов Диловар
Просмотров: 3824 | Комментарии: 1 | Рейтинг: 3.0/3 |
Теги: урок, создаем игру, экшен, платформер, скирра, начинающим, констракт, Scirra Construct, Статья, 2d
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Платформер-экшен в Scirra Construct для начинающих (часть 7)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 1
+0-
1 Nick_Rimer   (30 Августа 2013 13:05)
Nick_Rimerбыло бы неплохо избавиться от таких ошибок, как "дотронится" или "чтоли", нехватки пробелов и неверных знаков препинания.. wink это улучшит качество материала! а так урок хороший, и дело полезное, об этом я уже где-то говорил..
тщательно проверяй написанный текст хотя бы в ворде! удачи!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Doomsday
  • Golden T Game Engine
  • DX Studio
  • Spring
  • Zelda Classic
  • HeroEngine
  • Chocolate Doom
  • Visual Studio
  • OpenSpace3D
  • Smile Game Builder
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2018 Рейтинг