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

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

Предотвращение превышения значения емкости клипа

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

  1. Поскольку на этот раз мы увеличиваем количество боеприпасов, мы должны убедиться, что боеприпасы не превышают допустимую емкость магазина. Для этого мы можем использовать простую версию метода AmmoCount из кода Simple Ammo Count System.

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

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

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

3. Метод обновления пользовательского интерфейса будет размещен за пределами оператора if-else, потому что он нужен нам для обновления отображаемого числа независимо от того, вычитается ли оно, добавляется или используется по умолчанию.

Программирование коллекционного предмета

Мой коллекционный боеприпас будет в виде бонуса, так как в настоящее время я работаю над ретро-игрой 2D Space Shooter, однако этот код работает для любого типа коллекционного предмета, который использует систему столкновений, чтобы определить, когда игрок выбирает его. вверх. Поскольку это включение питания, в этом разделе будет использоваться код из Модульной системы включения питания с состояниями переключения и Добавление включения.

  1. Идея состоит в том, чтобы вызвать метод в обнаружении столкновений и конкретно определить тег игрока. Вы можете напрямую вызвать метод AmmoCount и назначить в нем сумму, которую хотите восстановить, как и в предыдущей статье, где мы вызывали метод с суммой вычитания. В моем случае Power-Up полностью пополняет боеприпасы, но вы можете назначить любое значение, которое захотите.

2. Наконец, Power-Up создается случайным образом с использованием Coroutine для обработки появления.

Результат: