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

  1. После создания соответствующего датчика здоровья и анимации создайте метод для управления поведением датчика здоровья. Это будет в моем скрипте Player.
 public void RestoreLives()
    {
        if (_lives < 3)
        {
            _lives++;

            if (_lives == 3)
            {
                _leftEngine.SetActive(false);
            }
            else if (_lives == 2)
            {
                _rightEngine.SetActive(false);
            }

            _uiManager.UpdateLives(_lives);
        }
    }

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

2. Это новое усиление необходимо добавить в мою модульную систему усиления в моем сценарии включения.

switch(powerupID) 
                { 
                    case 0:
                        player.TripleShotActive();
                        break;
                    case 1:
                        player.SpeedBoostActive();
                        break;
                    case 2:
                        player.ShieldActive();
                        break;
                    case 3:
                        player.AmmoCount(15);
                        break;
                    case 4:
                        player.RestoreLives();
                        break;
                    default:
                        Debug.Log("Default Value");
                        break;
                }

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

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

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