public void DealDamage(int damage) { if (_shieldHP > 0) { if (_shieldHP > damage) { _shieldHP -= damage; damage = 0; OnShieldValueChanged?.Invoke(_shieldHP); } else { damage -= _shieldHP; DropShield(); } } if (damage > 0) { if (_hullHP > damage) { _hullHP -= damage; damage = 0; OnHullValueChanged?.Invoke(_hullHP); } else { damage -= _hullHP; Destruct(); } } }
private void Destruct() { destroyed = true; _hullHP = 0; OnHullValueChanged?.Invoke(0); GameObject shipExplosionObject = Instantiate(_shipExplosionPrefab, transform.position, Quaternion.identity); Destroy(shipExplosionObject, 5f); Destroy(gameObject); foreach (Collider collider in GetComponentsInChildren <Collider>()) { collider.enabled = false; } }