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

  • В этой статье есть аспект анимации для достижения желаемых результатов, включая изменение существующих спрайтов. В этой статье этот процесс не рассматривается, но ранее я писал о создании анимации, которая может служить напоминанием.
  1. Первым шагом будет изменение моя модульная система включения в моем сценарии включения. Количество бонусов или случаев в отношении моего кода будет варьироваться от 0 до 3, где 3 — это только что созданный набор боеприпасов.
switch(powerupID) 
                { 
                    case 0:
                        player.TripleShotActive();
                        break;
                    case 1:
                        player.SpeedBoostActive();
                        break;
                    case 2:
                        player.ShieldActive();
                        break;
                    case 3:
                        player.AmmoCount(15);
                        break;
                    default:
                        Debug.Log("Default Value");
                        break;
                }

2. Если коллекционный предмет боеприпасов подобран игроком, количество боеприпасов игрока должно быть равно 15. Он также обновит пользовательский интерфейс для количества боеприпасов, чтобы отразить изменение. Изменения, добавленные ниже, находятся в моем скрипте Player.

public void AmmoCount(int shots)
    {
        if (shots >= _currentAmmo)
        {
             _currentAmmo = 15;
        }
        else
        {
            _currentAmmo += shots;
        }

        _uiManager.UpdateAmmo(_currentAmmo);
    }

Количество выстрелов никогда не превысит 15 при сборе бонуса.

3. Убедитесь, что ваш бонус может правильно появиться в скрипте SpawnManager.

 IEnumerator SpawnPowerupRoutine()
    {
        while (_stopSpawning == false)
        {
            Vector3 posToSpawn = new Vector3(Random.Range(-8.0f, 8.0f), 7, 0);
            int randomPowerup = Random.Range(0, 4);
            Instantiate(powerups[randomPowerup], posToSpawn, Quaternion.identity);
            yield return new WaitForSeconds(Random.Range(5f, 8f));
        }
    }

4. Последнее, что нужно проверить, это игровой объект Spawn Manager в представлении инспектора Unity. Префаб усиления боеприпасов должен быть прикреплен, чтобы он мог появиться в вашей игре. Невыполнение этого требования либо не создаст бонус, либо создаст только другие ваши бонусы, либо, если ваши методы создания неверны, не создаст и предотвратит появление других бонусов (как я испытал).