2D космический шутер - фаза II: основные задачи программирования

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

Примечание. Вы можете узнать о настройке 2D Sprite Shield в следующей статье - Создание 2D Forcefield с динамическими изменениями цвета. Вы также можете узнать, как изменить цвет щита, когда он теряет целостность.

Программирование поведения

  1. Добавьте глобальные переменные для следующего:
  • Sprite Renderer: позволяет нам включать и выключать Shield Sprite.
  • Сила щита: количество ударов, которые может выдержать щит, прежде чем он станет неактивным. Эта переменная не является абсолютно необходимой для щитов с одним ударом, если вы не хотите иметь способ изменить прочность щита или создать щит, который поглощает несколько ударов.

-Дополнительно-

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

2. Переменные SerializeField должны гарантировать, что мы можем установить их в Инспекторе. Просто перетащите объект щита (спрайт щита) во вновь созданные области в Инспекторе. Сделайте это для обоих SerializeFields.

3. Следующий код необходимо разместить там, где вы обнаруживаете урон, наносимый противнику. В моем случае повреждение обнаруживается с помощью логики столкновения, поэтому я вычитаю из силы щита всякий раз, когда обнаруживается столкновение с лазером игрока. Поскольку я установил силу щита на 1, он перейдет в неактивное состояние всего за 1 удар, по этой причине я также установил для визуализатора значение false. Если для визуализатора установлено значение false, спрайт исчезнет.

4. Абсолютно важно, чтобы Враг не получил урон до того, как щит потеряет всю свою силу. Этим можно управлять, задав условие перед уничтожением вражеского объекта. Пока Shield Strength больше 0, будет выполняться оператор return. Это означает, что код вне оператора if не будет выполняться, поэтому объект Enemy не будет уничтожен, пока он не перестанет быть истинным.

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

Результат:

Эта статья является частью серии Core Programming Challenges от GameDevHQ. В следующей статье я расскажу о том, как рандомизировать врагов, чтобы некоторые из них появлялись со щитами, а другие - нет.