Как сделать систему пауэр-апов в Unity

Пауэр-апы — это усиливающие бонусы для игрока, и важный компонент гэймплея. В данном уроке по Unity вы узнаете, как спроектировать и создать такую систему с многоразовым использованием.

Версия: C# 6, Unity 2017.x, Unity

Система бонусов в игре на Unity

Что было бы с Sonic The Hedgehog без золотых колец и мощных кроссовок; Супер Марио, без грибов; или Pac-Man без гранул? Игры не были бы такими увлекательными!

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

В этом уроке вы узнаете, как:

  • Разработать и создать многоразовую систему пауэр-апов.
  • Использовать в игре взаимодействие на основе сообщений.
  • Реализовать в игре с видом сверху «dodge-em-up» систему бонусов.

Примечание. В данном уроке предполагается, что вы знакомы с Unity и имеете промежуточные знания C#. Если вам нужно что-то вспомнить, то вы можете ознакомиться с другими уроками по Unity.

Вам понадобится Unity 2017.1 или свежая версия, чтобы выполнить урок, поэтому обновите Unity, если вы еще этого еще не сделали.

Приступая к работе

Игра, с которой вы будете работать, будет с видом сверху и в жанре «dodge-em-up»; это немного похоже на Geometry Wars без стрельбы — и без коммерческого успеха. Ваш герой в шлеме должен уворачиваться от врагов, чтобы добраться до выхода; столкновение с врагами снижает здоровье. Когда все хитпоинты исчерпаны, игра окончена.

Скачайте начальный проект для урока вверху страницы и распакуйте в директорию по своему усмотрению. Откройте проект в Unity и взгляните на папки проекта:

Игровые ресурсы проекта в окне Project редактора Unity

  • Audio: Содержит файлы звуковых эффектов для игры.
  • Materials: Материалы для объектов игры.
  • Prefabs: Содержит префабы для игры, включая игровую область, игрока, врагов, частицы и бонусы.
  • Scenes: Основная игровая сцена.
  • Scripts: Содержит скрипты C# для игры, которые были тщательно прокомментированы. Не стесняйтесь разбираться в скриптах, если хотите познакомиться с ними поближе, прежде чем приступить к работе.
  • Textures: Исходные изображения, используемые для игры и экрана заставки.

Откройте сцену с именем main и нажмите на кнопку Play.

Сцена main для создания системы бонусов в редакторе Unity

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

Различные состояния цикла бонуса

У бонуса есть цикл, который состоит из нескольких различных состояний:

Различные состояния цикла для бонуса в Unity

  • Первым этапом является создание, которое может происходить во время игры или во время разработки, когда вы вручную помещаете игровые объекты пауэр-апы в сцену.
  • Далее идет режим привлечения внимания, когда бонусы могут анимироваться или иным образом делать что-то для привлечения внимания.
  • Этап сбора — когда игрок подбирает бонус усиления, что может запускать звуки, системы частиц или другие спецэффекты.
  • Сбор бонуса приводит к полезной нагрузке, которая увеличивает параметры. Полезная нагрузка может быть чем угодно, от скромного бонуса к здоровью до получения игроком потрясающих суперсил. Шаг полезной нагрузки также устанавливает проверку периода действия. Пауэр-ап может быть настроен на истечение срока действия по завершению установленного количества времени, после того, как игрок получил повреждение, после определенного количества использований бонуса или после того, как возникло какое-либо другое условие гэймплея.
  • Проверка срока годности ведет к собственно этапу истечения срока. Этап истечения срока действия уничтожит бонус и означает завершение цикла.

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

Создание простого пауэр-апа звезды

Усиливающий игрока бонус Звезда в Unity

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

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

Создайте новый игровой объект Sprite, назовите его PowerUpStar и поместите его прямо над игроком в точке (X: -6, Y: -1,3). Чтобы сцена оставалась аккуратной, сделайте спрайт дочерним по отношению к пустому игровому объекту PowerUps в сцене:

Настройка параметров спрайта в окне Inspector редактора Unity

Теперь определите внешний вид спрайта. Установите Transform Scale на (X: 0,7, Y: 0,7) в компоненте Sprite Renderer, назначьте звезду на слот Sprite и установите Color на бледно-коричневый цвет (R: 211, G: 221, B: 200).

Установка отображения спрайта в компоненте Sprite Renderer редактора Unity

Добавьте компонент Box Collider 2D, установите флажок Is Trigger и установите размер (X: 0,2, Y: 0,2):

Добавление и настройка компонента Box Collider 2D для спрайта в окне Inspector редактора Unity

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

Отображение бонуса в окне сцены редактора Unity

Разделение игровой логики с иерархией классов

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

Схема иерархии классов для проекта в Unity

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

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

Список последовательных действий для реализации работы алгоритма бонуса

Примечание. Для создания скрипта бонуса необходимо создать подкласс класса PowerUp и соблюдать следующий контрольный список. В этом уроке мы несколько раз ссылаемся на контрольный список, так что держите его под рукой!

  1. Реализовать PowerUpPayload для выдачи полезной нагрузки.
  2. При желании можно реализовать PowerUpHasExpired, чтобы удалить полезную нагрузку из предыдущего шага.
  3. Вызвать PowerUpHasExpired, когда бонус завершился. Если бонус истекает немедленно, то установите флажок ExpiresImmediately в инспекторе, поскольку нет необходимости вызывать PowerUpHasExpired.

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

Создание первого скрипта Power-Up

Добавьте новый скрипт в игровой объект PowerUpStar, назовите его PowerUpStar и откройте в редакторе кода.

Добавление нового компонента скрипта игровому объекту в Unity

Добавьте следующий код, заменив большую часть стандартного начального кода Unity, оставив операторы using вверху без изменений.

class PowerUpStar : PowerUp
{
    public int healthBonus = 20;

    protected override void PowerUpPayload()  // Checklist item 1
    {
        base.PowerUpPayload();

        // Payload is to give some health bonus
        playerBrain.SetHealthAdjustment(healthBonus);      
    }
}

Код довольно короткий, но это все, что вам нужно для реализации логики Star! Скрипт обращается к каждому пункту контрольного списка следующим образом:

  1. PowerUpPayload награждает некоторым количеством здоровья, вызывая playerBrain.SetHealthAdjustment. Родительский класс PowerUp уже позаботился о получении ссылки playerBrain. Тот факт, что у вас есть родительский класс, означает, что вам нужно будет вызвать base.PowerUpPayload, чтобы обеспечить выполнение всей базовой логики до основного кода.
  2. Вам не нужно выполнять PowerUpHasExpired, потому что награда за здоровье является постоянной.
  3. Период действия этого бонуса истекает немедленно, поэтому вам, опять же, не нужно ничего кодировать; просто установите флажок ExpiresImmediately в инспекторе. Это подходящая возможность, чтобы сохранить метод и вернуться в Unity, и выполнить некоторые настройки инспектора.

Создание первого бонуса усиления в сцене

После сохранения и переключения обратно в Unity игровой объект StarPowerUp будет выглядеть в инспекторе следующим образом:

Параметры игрового объекта в окне Inspector редактора Unity

Заполните значения инспектора следующим образом:

  • Power Up Name: Star
  • Explanation: Восстанавливает некоторое количество здоровья…
  • Power Up Quote: (Я стану намного могущественным, чем вы можете себе представить)
  • Expires Immediately: Отмечен
  • Special Effect: Перетащите префаб из папки проекта Prefabs / Power Ups / ParticlesCollected
  • Sound Effect: Перетащите аудиоклип из папки проекта Audio / power_up_collect_01
  • Health Bonus: 40

Как только вы это сделаете, бонус усиления будет выглядеть так:

Настройки скрипта игрового объекта в окне Inspector редактора Unity

Когда вы будете довольны настройками игрового объекта PowerUpStar, перетащите его в папку дерева проекта Prefabs / Power Ups, чтобы создать префаб.

Создание префаба на основе игрового объекта в Unity

Используйте новый префаб, чтобы добавить несколько звезд справа от сцены в места, которые вам нравятся.

Запустите сцену и направьте героя к первому бонусу. Взятие бонусов сопровождается звуком и великолепным эффектом частиц. Потрясающие!

Отображение спецэффектов при взятии бонуса игроком в окне сцены редактора Unity

Связь на основе сообщений

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

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

У каждого метода коммуникации есть свои плюсы и минусы, и, конечно, не всем подходит один и тот же способ. В этой игре вы видите взаимодействие на основе сообщений, как описано в руководстве по Unity.

Вы можете классифицировать игровые объекты как транслирующие сообщения, прослушиватели сообщений или и то, и другое:

Схема коммуникации игровых объектов на основе сообщений в Unity

Слева на приведенной выше диаграмме показаны некоторые распространители сообщений. Вы можете думать об этом как об объектах, «выкрикивающих», когда происходит что-то интересное. Например, игрок транслирует сообщение «Я поранился». Справа на приведенной выше диаграмме находятся слушатели сообщений. Как следует из названия, они прослушивают сообщения. Слушателям не нужно слушать каждое сообщение; они просто прислушиваются к тем сообщениям, на которые они могут захотеть отреагировать.

Распространители сообщений также могут быть слушателями сообщений. Например, бонус транслирует сообщения, а также прослушивает сообщения игроков. Хорошим примером этого является бонус, который завершается, когда игрок получает повреждение.

Вы можете себе представить, что если есть много вещателей и много слушателей, может быть много линий, пересекающихся между левой и правой сторонами. Чтобы упростить жизнь, Unity предоставляет компонент EventSystem, который находится между ними, например:

Схема коммуникации игровых объектов на основе сообщений и компонента системы событий в Unity

Unity использует расширяемый компонент EventSystem для обработки ввода. Компонент также управляет большей частью логики отправки и получения событий.

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

Шаги по настройке обмена сообщениями

Это последняя часть теории, прежде чем вы сможете вернуться к созданию системы бонусов. Чтобы транслировать сообщение, вам необходимо выполнить следующие действия:

  • Вещатели определяют, какое сообщение они хотят транслировать, как интерфейс C#.
  • Затем вещатели отправляют сообщения слушателям, хранящимся в списке слушателей.

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

Вы увидите это более ясно на примере. Посмотрите код в файле IPlayerEvents.cs:

public interface IPlayerEvents : IEventSystemHandler
{
   void OnPlayerHurt(int newHealth); 
   void OnPlayerReachedExit(GameObject exit); 
}

В этом интерфейсе C# есть методы для OnPlayerHurt и OnPlayerReachedExit. Это сообщения, которые может отправлять игрок. Теперь посмотрим на метод SendPlayerHurtMessages в файле PlayerBrain.cs. Приведенный ниже фрагмент содержит числа, на которые есть ссылки в следующем пояснении:

private void SendPlayerHurtMessages()
   {
      // Send message to any listeners
      foreach (GameObject go in EventSystemListeners.main.listeners)  // 1
      {
         ExecuteEvents.Execute                   // 2
             (go, null,                                               // 3
              (x, y) => x.OnPlayerHurt(playerHitPoints)            // 4
             );
      }
   }

Вышеуказанный метод обрабатывает отправку сообщения OnPlayerHurt. Цикл foreach перебирает все прослушиватели, содержащиеся в списке EventSystemListeners.main.listeners, и вызывает ExecuteEvents.Execute для каждого прослушивателя, который отправляет сообщения.

Рассмотрим каждый пронумерованный комментарий по очереди:

  1. EventSystemListeners.main.listeners — это список игровых объектов, глобально видимых в синглтон-объекте EventSystemListeners. Любой игровой объект, который хочет прослушать любое сообщение, должен быть в этом списке. Вы можете добавить игровой объект в этот список, присвоив ему тег Listener в инспекторе или вызвав EventSystemListeners.main.AddListener.
  2. ExecuteEvents.Execute — это метод, предоставляемый Unity, который отправляет сообщение игровому объекту. Тип в угловых скобках — это имя интерфейса, содержащего сообщение, которое вы хотите отправить.
  3. Это выражение указывает игровой объект для отправки сообщения и null для дополнительной информации о событии, следуя примеру руководства по синтаксису Unity.
  4. Это лямбда-выражение. Это расширенная тема C#, выходящая за рамки данного урока. По сути, лямбда-выражение позволяет передавать код в качестве параметра в метод. В этом случае код содержит сообщение, которое вы хотите отправить (OnPlayerHurt), вместе с необходимыми ему параметрами (playerHitPoints).

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

Объекты-интерфейсы в окне Project редактора Unity

  • IPlayerEvents: используется для сообщений, когда игрок получает повреждение или достигает выхода.
  • IPowerUpEvents: используется для сообщений, когда происходит сбор или истечение срока действия бонуса.
  • IMainGameEvents: используется для сообщений, когда игрок выигрывает или проигрывает.

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

Бонус для увеличения скорости

Бонус скорости для игрока в Unity

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

Вы создадите бонус, который даст игроку дополнительную скорость, пока он не наткнется на что-нибудь. Бонус обнаружит, когда игрок на что-то наткнется, «прислушиваясь» к гэймплею. В частности, бонус будет прослушивать игрока, чтобы транслировать сообщение «Меня поранили».

Чтобы прослушать сообщение, вам необходимо выполнить следующие действия:

  1. Реализуйте соответствующий интерфейс C#, чтобы определить, что слушатель игровой объект должен слушать.
  2. Убедитесь, что сами слушатели игровые объекты существуют в списке EventSystemListeners.main.listeners.

Создайте новый Sprite, назовите его PowerUpSpeed и поместите его где-нибудь в верхнем левом углу арены над игроком. Установите Scale на (X: 0.6, Y: 0.6). Этот игровой объект будет слушателем, поэтому присвойте ему тег Listener в инспекторе.

Добавьте Box Collider 2D и задайте размер (X: 0.2, Y: 0.2). В Sprite Renderer назначьте Sprite как fast и раскрасьте его, как вы делали ранее с помощью бонуса Star. Убедитесь, что вы также включили Is Trigger. Когда вы закончите, GameObject должен выглядеть примерно так:

Настройки игрового объекта для бонуса скорости в окне Inspector редактора Unity

Добавьте к этому игровому объекту новый скрипт с именем PowerUpSpeed и добавьте в скрипт следующий код:

class PowerUpSpeed : PowerUp 
{
    [Range(1.0f, 4.0f)]
    public float speedMultiplier = 2.0f;

    protected override void PowerUpPayload()          // Checklist item 1
    {
        base.PowerUpPayload();
        playerBrain.SetSpeedBoostOn(speedMultiplier);
    }

    protected override void PowerUpHasExpired()       // Checklist item 2
    {
        playerBrain.SetSpeedBoostOff();
        base.PowerUpHasExpired();
    }
}

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

  1. PowerUpPayload. Это вызывает метод base, чтобы гарантировать, что вызывается код родительского класса, а затем устанавливает прирост скорости для плеера. Обратите внимание, что родительский класс определяет playerBrain, который содержит ссылку на игрока, собравшего усиление.
  2. PowerUpHasExpired. Вам нужно удалить заданный вами прирост скорости, а затем вызвать метод base.
  3. Последний пункт контрольного списка — вызвать PowerUpHasExpired по истечении времени бонуса. Вы немного справитесь с этим, прослушав сообщения игрока.

Настройте объявление класса, чтобы реализовать интерфейс для сообщений игрока:

class PowerUpSpeed : PowerUp, IPlayerEvents

Примечание. Если вы используете Visual Studio, вы можете навести указатель мыши на термин IPlayerEvents после его ввода и выбрать пункт меню Implement interface explicitly. Это создаст для вас заглушки методов.
Выбор из меню нужного метода в редакторе кода Visual Studio

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

    void IPlayerEvents.OnPlayerHurt(int newHealth)
    {
        // You only want to react once collected
        if (powerUpState != PowerUpState.IsCollected)
        {
            return;
        }

        // You expire when player hurt
        PowerUpHasExpired();                 // Checklist item 3
    }

    /// 
    /// You have to implement the whole IPlayerEvents interface, but you don't care about reacting to this message
    /// 
    void IPlayerEvents.OnPlayerReachedExit(GameObject exit)
    {
        
    }

Метод IPlayerEvents.OnPlayerHurt вызывается каждый раз, когда игрок получает урон. Это часть «прослушивания сообщений вещателя». В этом методе вы сначала проверяете, что включение будет реагировать только после сбора. Затем код вызывает PowerUpHasExpired в родительском классе, который обрабатывает логику истечения срока действия.

Сохраните метод и вернитесь в Unity, чтобы выполнить необходимые настройки инспектора.

Создание бонуса ускорения в сцене

Игровой объект SpeedPowerUp теперь будет выглядеть в инспекторе следующим образом:

Параметры игрового объекта бонуса скорости в окне Inspector редактора Unity

Заполните значения инспектора следующим образом:

  • Power Up Name: Speed
  • Explanation: Сверхбыстрое движение до контакта с противником
  • Power Up Quote: (Запуск Kessel менее чем за 12 parsecs)
  • Expires Immediately: не отмечен
  • Special Effect: ParticlesCollected (то же, что и для бонуса Star)
  • Sound Effect power_up_collect_01 (то же, что и для бонуса Star)
  • Speed Multiplier: 2

После настройки бонус должен будет выглядеть так:

Установленные параметры игрового объекта бонуса скорости в окне Inspector редактора Unity

Как только вы будете довольны настройками бонуса скорости, перетащите его в папку дерева проекта Prefabs / Power Ups, чтобы создать префаб. Вы не будете использовать префаб в демонстрационном проекте, но это хорошая идея для полноты картины.

Запустите сцену и переместите героя, чтобы получить бонус Speed, и вы получите дополнительную скорость до следующего столкновения с врагом.

Отображение бонуса скорости в окне Scene редактора Unity

Бонус Push

Бонус усиления Push для игры в Unity

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

В иерархии проекта найдите и проверьте префаб PowerUpPush. Откройте его скрипт с именем PowerUpPush и просмотрите код.

Компонент скрипта префаба PowerUpPush в окне Inspector редактора Unity

Вы увидите уже описанные знакомые методы. Все интересное действие для включения Push происходит в методе Update, как показано ниже:

    private void Update ()
    {
        if (powerUpState == PowerUpState.IsCollected &&     //1
            numberOfUsesRemaining > 0)                      //2
        {
            if (Input.GetKeyDown ("p"))                     //3
            {
                PushSpecialEffects ();                      //4
                PushPhysics ();                             //5
                numberOfUsesRemaining--;
                if (numberOfUsesRemaining <= 0)
                {
                    PowerUpHasExpired ();                   //7
                }
            }
        }
    }

Вот что происходит в приведенном выше коде:

  1. Скрипт должен выполняться только для собранных бонусов.
  2. Скрипт должен выполняться только в том случае, если остались неиспользованные.
  3. Скрипт должен выполняться только в том случае, если игрок нажимает «P».
  4. Скрипт вызывает красивый эффект частиц вокруг игрока.
  5. Скрипт отталкивает врагов от игрока.
  6. Бонус используется еще раз.
  7. Если от бонуса больше не осталось использований, срок его действия истекает.

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

Отображение и применение бонуса Push в окне Scene редактора Unity

Дополнительное испытание: бонус неуязвимости

Бонус неуязвимости для игры в Unity

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

Несколько советов и предложений для решения этой задачи:

  1. Sprite: Смотрите спрайт в папке проекта Textures/shield
  2. Power Up Name: Invulnerable
  3. Power Up Explanation: Вы неуязвимы какое-то время
  4. Power Up Quote: (Отличный ребенок, не дерзай)
  5. Coding: Выполните тот же контрольный список кодирования, который вы использовали в разделах «Звезда» и «Скорость». Вам понадобится таймер, который контролирует истечение срока действия усиливающего бонуса. Метод SetInvulnerability в PlayerBrain будет включать и выключать неуязвимость.
  6. Effects: Проект содержит эффект частиц для приятного эффекта пульсации вокруг игрока, когда он неуязвим. Смотрите префаб в Prefabs / Power Ups / ParticlesInvuln. Вы можете создать его как дочерний элемент игрока, пока он неуязвим.

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

Надеюсь, вы попробовали сделать задание перед тем, как подсмотреть!

Куда двигаться дальше?

Игровая сцена с различными бонусами в Unity

Вы можете скачать весь проект вверху страницы урока.

Если вы хотите продолжить работу над проектом, вы можете сделать следующее:

  • Добавьте больше бонусов. Как насчет усиления, которое стреляет лучами и убивает врагов?
  • Создайте фабричный класс, чтобы случайным образом создавать бонусы в игровой зоне во время выполнения.
  • Если вы хотите продолжить изучение Unity, ознакомьтесь с книгами по Unity, доступными на нашем сайте.

Вам все еще интересно, из какого сериала взяты цитаты? Взгляните на ответ ниже:

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

Автор перевода: Jean Winters

Источник: How to make a Power-Up System in Unity

Смотрите также:

Как сделать интерфейс в Юнити для игрыВведение в создание пользовательского интерфейса на Unity


Введение в Unity основы работыВведение в Unity: основы работы


Комментировать

Почта не публикуется.Обязательные поля отмечены *