После добавления предмета коллекционирования боеприпасов пришло время добавить предмет коллекционирования здоровья. Будет два различия в поведении этого предмета коллекционирования здоровья по сравнению с предметом коллекционирования боеприпасов. Во-первых, набор здоровья исцелит игрока только на единицу или восстановит одну жизнь. Во-вторых, на корабле также будет отражено улучшение здоровья. Другими словами, повреждения двигателя должны исчезнуть после восстановления соответствующего ресурса.
- После создания соответствующего датчика здоровья и анимации создайте метод для управления поведением датчика здоровья. Это будет в моем скрипте 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. Необходимо прикрепить сборный блок усиления для сбора здоровья, чтобы он мог появиться в вашей игре. В противном случае усиление либо не будет появляться, либо будут появляться только другие ваши бонусы, либо, если ваши методы появления неверны, не будут появляться и предотвращать появление других бонусов (как я испытал изначально с коллекционными боеприпасами). Также дважды проверьте, чтобы убедиться, что префабам звукоснимателей назначены правильные идентификационные номера включения и аудиоклипы.