Платформер-экшен в 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»(позже мы будем делать меню ). И последнее, нам нужно добавить на уровень объект 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. Теперь создаем событие «если пуля ГГ дотронится до врага, то пуля уничтожится» (ну теперь – то уж вы точно сможете сделать это самостоятельно ):
И добавьте этому событию, действие: отнять один у переменной Enemy_live по аналогии с тем, как мы делали это с жизнями ГГ, только теперь при создании действия выбираем врага(т.е тот объект, который содержит нужную переменную). А дальше также, Subtract from… В итоге:
Обычно в играх, на экране не отображаются жизни врагов(если только это не босс), а наша игра что, самая лысая чтоли? Так что нет нужды выводить его жизни на экран. Но, должно же что-то происходить когда у врага не осталось жизней. В нашем случае он просто уничтожится. Создаем событие: если жизней врага меньше или равно нулю, то уничтожить врага и основу врага.(тоже по аналогии):
При запуске игры, немного постреляв во врага, он исчезнет. Вот и всё, для изменения количества жизней (и врага и ГГ) просто изменяйте значения соответствующих переменных. Вот исходник того, что получилось.Продолжение следует...
Категория: Создание игр | Добавил: dilovar50 (28 Апреля 2013)
| Автор: Давлятов Диловар
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Платформер-экшен в Scirra Construct для начинающих (часть 7)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
было бы неплохо избавиться от таких ошибок, как "дотронится" или "чтоли", нехватки пробелов и неверных знаков препинания.. это улучшит качество материала! а так урок хороший, и дело полезное, об этом я уже где-то говорил.. тщательно проверяй написанный текст хотя бы в ворде! удачи!
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]