Часть 5: Добавление монет и очков
Введение
С Частью 4 завершено, у вас теперь должен быть уровень и играбельный персонаж, который может бегать и прыгать.
Теперь нам нужно дать нашему игроку цель. В этой части урока мы добавим собираемые монеты и счёт для их учёта.
Монеты, скрытые в блоках, являются одной из самых знаковых особенностей Марио. Давайте начнём этот урок, создавая эту особенность.
Скрытие монет в кирпичах
Удар по кирпичу
Мы сделаем наш первый кирпич таким образом, чтобы мы могли быстро изменить его, чтобы он вмещал столько монет, сколько нам нужно. Как только кирпич будет завершён, вы сможете его дублировать и размещать в любом месте.
Этот урок построен на основе Части 4 и предполагает, что вы создали проект Части 4 из хаба.
Начните с выбора одного из кирпичей, который будет содержать монеты. Из свойств объекта нажмите кнопку "Поведение", чтобы открыть редактор поведения.
Из категории Объект добавьте поведение Коллизия. Поведение Коллизия вызовет событие каждый раз, когда 2 указанных объекта соприкасаются друг с другом.
Нажмите на поведение Коллизия, которое вы добавили, чтобы просмотреть его свойства. Вы увидите, что у него есть 2 поля для выбираемых объектов (обозначаемых как Объект A и Объект B). Первый (Объект A) выбран за вас, и это тот, к которому вы применяете поведения. Вы можете нажать, чтобы изменить это, если хотите, но мы оставим это в покое.
Пустое поле предназначено для вашего второго объекта (Объект B), с которым поведение коллизии будет проверять. Нажмите на пустое поле и выберите вашего персонажа, которого вы добавили в Части 4 руководства.
Теперь, когда ваши объекты выбраны, вы можете изменить, какая часть Объекта B вызовет событие коллизии. Выключите все переключатели, кроме опции "Сверху". Теперь поведение коллизии будет работать только тогда, когда верхняя часть персонажа касается кирпича.
Теперь, когда кирпич проверяет, касается ли голова игроков его, давайте заставим его подниматься и опускаться. Для этого мы используем поведение Переместить, чтобы поднять его вверх, а затем вернуться вниз.
Из категории Трансформация добавьте поведение Переместить и соедините его с поведением Коллизия, которое вы добавили ранее.
Нажмите на поведение Переместить и посмотрите его свойства. Поскольку мы хотим, чтобы кирпич поднимался, когда игрок ударяет по нему, мы изменим значение Y. Установите его на небольшое значение, так как мы хотим дать ему небольшой эффект прыжка. Я использовал 0.20 метра.
Вам также нужно изменить Продолжительность. Продолжительность — это время, необходимое для завершения перемещения. По умолчанию продолжительность установлена на 1, но это означает, что кирпич переместится на 0.2 метра за 1 секунду. Это слишком медленно для наших нужд. Измените продолжительность на 0.10 секунд.
Примечание: Установка продолжительности равной нулю приведет к мгновенному перемещению вашего объекта в новое положение. Он не будет плавно анимироваться. Также обратите внимание на поле с текстом "Линейный". Это эффект движения, который применяется к вашему перемещению. Если у вашего поведения есть продолжительность, оно будет перемещаться на основе этого эффекта.
Теперь, чтобы кирпич снова отскочил, добавьте ещё одно поведение Переместить и соедините его с предыдущим.
Снова измените свойства. На этот раз мы хотим, чтобы кирпич опустился назад. Чтобы опустить его, измените значение Y на отрицательное число. Поскольку мы хотим, чтобы кирпич вернулся в исходное положение, мы переместим его на -0.20 метров. Вам также нужно изменить продолжительность на 0.10 секунд.
На этом этапе, если вы нажмёте "играть", ваш игрок может ударить по кирпичу снизу, и кирпич будет подниматься и опускаться. Однако есть несколько проблем, которые нам нужно решить.
-
Есть небольшой баг в нашей логике. Если игрок продолжает прыгать очень быстро, не давая коробке вернуться в исходное положение, она будет продолжать подниматься.
-
Кирпич прыгает вечно. Что если вы хотите только несколько монет, а затем он останавливается, когда пуст?
-
Он ещё не даёт никаких монет.
Давайте начнём с решения проблемы 1. Это на самом деле простая ошибка для исправления. Все, что нам нужно сделать, это отключить поведение коллизии, как только игрок ударит по нему, а затем включить его снова, когда он закончит движение.
Для этого переключитесь на категорию Настройка и добавьте "Поведение Выключено", затем соедините это с поведением Коллизия.
Далее, в свойствах Поведения Выключено нажмите на пустое поле с надписью "Выбрать Поведение". В списке найдите правильное поведение коллизии. Обратите внимание, что список показывает все поведения из всех объектов. Список отсортирован по именам объектов.
Теперь вам нужно включить поведение коллизии обратно, когда оно завершит прыжок. Для этого просто добавьте Поведение Включено из категории Настройка и соедините его со вторым поведением Переместить. В свойствах поведения обязательно выберите поведение коллизии, чтобы снова включить его.
Для проблемы 2 мы будем использовать контейнер с коробкой, чтобы установить количество монет, которые содержит каждый кирпич. Благодаря этому мы можем легко изменять конкретные кирпичи, чтобы у них было больше или меньше монет.
Первое, что вы должны сделать, это добавить контейнер с коробкой из категории Настройка, вы можете разместить его в любом месте на экране, так как он не соединяется ни с чем другим. Вы также можете переименовать этот контейнер с коробкой в "Монеты", чтобы его было легче найти позже (чтобы запомнить, как переименовать поведения, посмотрите Части 4)
В свойствах поведения Контейнер монет измените параметр "Значение по умолчанию" на 3. Это будет количество монет, которое содержит кирпич.
Теперь из категории Логика добавьте поведение Добавить Значения и соедините его со вторым Переместить (который мы добавили ранее). Мы будем использовать это поведение Добавить Значения, чтобы отслеживать каждый раз, когда игрок ударяет по кирпичу.
Как только поведение "Добавить Значения" подключено, нажмите на него, чтобы просмотреть свойства поведения. Свойства показывают 2 поля ввода, и поведение "Добавить Значения" выдаёт сумму введённых значений.
В нашем случае, так как мы используем добавление значений, чтобы отслеживать каждый удар, мы введем 1 в верхнее поле, а для нижнего поля мы выведем сумму поведения "Добавить Значения" обратно в второе поле ввода.
Что это делает, так это увеличивает сумму каждый раз, когда поведение запускается. В первый раз поведение запускается как 1+0, так как суммы нет. Во второй раз это будет 1+1, так как сумма из предыдущего раза сохраняется.
Теперь вам нужно проверить, равна ли сумма добавленных значений значению контейнера "Монеты", который вы добавили ранее.
Для этого добавьте Если поведение из категории Логика и соедините его с Добавить Значения из предыдущего шага.
С подключенным Если, нажмите на него, чтобы просмотреть свойства поведения. Поведение Если проверяет, выполнено ли определенное условие (на основе 2 входных полей и выбранного условия).
В этом случае мы выведем (поделимся) сумму поведения добавления значений и поместим её в первое поле условия.
Затем выведите содержимое контейнера в второе поле условия.
С этими значениями, введенными в следующее подключенное поведение, оно будет выполняться только ЕСЛИ сумма добавления значений равна значению, хранящемуся в контейнере монет.
Теперь вам нужно отключить поведение коллизии и изменить графику, чтобы больше нельзя было получить монеты. Для этого добавьте новое поведение Поведение Выключено из категории Настройка и соедините его с Если. Как и ранее, выберите поведение коллизии как то, что вы хотите выключить.
Чтобы показать игроку, что больше нет монет, вы можете добавить поведение Изменить Графику из категории Трансформация и соединить его с Если.
После подключения выберите новую графику из свойств поведения Изменить Графику. Нажмите на второе поле в свойствах поведения и выберите новую графику.
Теперь, если вы нажмёте "играть", вы сможете прыгнуть и ударить по кирпичу 3 раза, прежде чем он остановится.
Получение очков
Настройка пользовательского интерфейса
Следующее, что осталось сделать, это на самом деле получать очки и собирать монеты при ударе по кирпичу!
Сначала мы добавим счётчик в углу экрана, чтобы показать игроку, сколько у него очков.
Итак, вернитесь к главному редактору, нажав "назад" в редакторе поведения. Затем вам нужно открыть панель Слои, нажав на 3 точки в правом верхнем углу экрана (вы также можете провести от края экрана).
Выберите слой Глобальный UI. UI слои существуют над другими слоями в сцене и обычно используются для кнопок, джойстиков и меток. Они также фиксированы на одном месте на экране и перемещаются вместе с остальным содержимым вашей сцены.
Примечание: Объекты, размещённые на слое Глобальный UI, будут существовать в каждой сцене вашего проекта. Если вы хотите, чтобы что-то существовало только в одной сцене, используйте слой Сцена UI.
С выбранным слоем Глобальный UI нажмите на иконку Особые Объекты в док-станции или перетащите её в сцену.
В появившемся окне выберите Метка, и метка будет помещена в вашу сцену.
Нажмите на только что добавленную метку, чтобы открыть свойства объекта. В свойствах метки вы можете изменить цвет текста, шрифт, отображаемый текст и многое другое.
Нажмите на большое текстовое поле и измените текст на "Очки:".
Затем нажмите "Выравнивание", чтобы расширить параметры выравнивания. Установите Ширину на 110 и Высоту на 64.
Примечание: Установка этих значений в 0 удаляет текстовую область и позволяет вашему тексту расти горизонтально бесконечно.
С установленными свойствами метки вы можете использовать инструмент Перемещение/Трансформация, чтобы расположить вашу новую метку в углу экрана и убедиться, что она не загораживает поле зрения игрока.
Когда ваша метка будет на месте, добавьте ещё одну метку в сцену, которая будет отображать ваши очки. На этот раз установите текст на 0, так как ваш игрок начинает с нулем очков. В отличие от предыдущего, мы установим конкретную ширину и высоту. Установите Ширину на 500pt и высоту на 64pt. Это даёт определённую область, в которой может появляться текст. Если у вас слишком много текста, чтобы вместить его в этой области, он будет обрезан.
Кроме того, установите горизонтальное выравнивание на по левому краю (По левому краю).
Когда вы закончите с параметрами метки, расположите её рядом с заголовком "Очки".
Получение очков
Теперь нам нужно увеличить ваши очки каждый раз, когда вы получаете монету. Вернитесь на свой главный слой и вернитесь к поведениям для кирпича с монетами, чтобы мы могли добавить необходимые поведения.
Из категории UI перетащите поведение "Добавить к счёту" и соедините его со вторым Переместить поведением, добавленным ранее в этом руководстве.
Затем нажмите на поведение Добавить к счёту и включите переключатель Бесконечный счёт. Если этот переключатель был выключен, следующее поведение было бы сработано, когда будет достигнуто указанное количество очков. Также убедитесь, что метка "0" выбрана как правильный объект, так как поведение Добавить к счёту автоматически выберет случайную метку в вашей сцене.
Если вы теперь нажмёте "играть", вы получите 1 очко каждый раз, когда игрок ударяет по кирпичу.
Теперь вы можете дублировать этот кирпич (как вы узнали в части 3) и размещать его по всему уровню.
Индивидуальные монеты
Ваша первая монета
Иногда вы можете захотеть просто добавить монеты по всему уровню, не пряча их внутри кирпичей. Это относительно просто, и мы обсудим это сейчас.
Начните с добавления графики монеты в вашу сцену, затем нажмите на неё, чтобы просмотреть свойства объекта.
Внизу свойств объекта убедитесь, что выбрана вкладка физика.
Находясь на вкладке физики, сделайте монету проходимой. Это позволит нашему игроку продолжать проходить мимо неё, не останавливаясь или замедляясь.
Теперь мы настроим границы коллизии монеты. Границы коллизии определяют физическую форму объекта. Границы коллизии могут быть другого размера или формы, чем визуальное представление объектов. Чтобы настроить границы коллизии, нажмите на иконку Коллизии.
В редакторе коллизий вы можете использовать палитру инструментов слева, чтобы изменять и создавать уникальные формы коллизии.
Для этого руководства мы выберем опцию "Круг" для создания круговой границы коллизии.
Затем перетащите зелёную точку на круге, чтобы изменить размер границы коллизии. Установите границу коллизии такого же размера, как монета. Обратите внимание, что если граница коллизии больше вашего объекта, то ваш игрок может взаимодействовать с ней даже до того, как физически коснётся графики монеты в центре.
Когда вы закончите создание границы коллизии, нажмите значок галочки в палитре инструментов, чтобы принять и сохранить новую форму.
Снова нажмите на монету, чтобы просмотреть свойства объекта. На этот раз откройте редактор поведения для монеты.
Из категории Объект добавьте поведение "Коллизия" на экран. Как и прежде, откройте свойства поведения коллизии и выберите игрока Зеленого Космонавта для Объекта B.
Далее из категории UI перетащите поведение Добавить к счёту и соедините его с коллизией. Снова в свойствах поведения включите переключатель для Бесконечный счёт и убедитесь, что выбрана правильная метка счёта.
Наконец, из категории Объект добавьте поведение Уничтожить объект и соедините его с поведением коллизии. Это полностью удалит монету, как только игрок столкнётся с ней.
Если вы нажмёте "играть", вы теперь можете столкнуться с монетой, и она исчезнет.
Вот и всё! Теперь ваша платформенная игра имеет собираемые монеты. На данный момент все, что вам нужно сделать, это дублировать ваши монеты и разместить их по всему уровню. Постарайтесь проявить креативность при размещении ваших монет!
Вы можете скачать завершённую версию Части 5 из Хаба и увидеть всё в действии.
В Части 6 мы начнём добавлять немного сложности в игру, вводя врагов.

