Exemple #1
0
    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();
            }
        }
    }
Exemple #2
0
    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;
        }
    }