void Explode() { Collider[] floaters = Physics.OverlapSphere(transform.position, explosionRange, 1 << 9, QueryTriggerInteraction.Collide); foreach (Collider c in floaters) { float dist = (c.transform.position - transform.position).magnitude; float dmg = Mathf.Clamp(dist / explosionRange, 0.0f, 1.0f); Ballast bal = c.GetComponent <Ballast>(); if (bal != null) { bal.CurrentHp -= damage * dmg; Debug.Log("Ballast: " + (damage * dmg)); } ShipBallaster shipBal = c.GetComponent <ShipBallaster>(); if (shipBal != null) { shipBal.CurrentHp -= damage * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp) * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp); Debug.Log("ShipBal damage: " + (damage * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp) * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp))); } } Explosives.SetActive(true); StartCoroutine(Destruction()); }
private void Blow() { if (typ) { model.SetActive(false); } Destroy(rigid); bHasCollided = true; Destroy(GetComponent <FollowShip>()); explosion.SetActive(true); Collider[] floaters = Physics.OverlapSphere(transform.position, explosionRange, 1 << 9, QueryTriggerInteraction.Collide); foreach (Collider c in floaters) { dg = true; float dist = (c.transform.position - transform.position).magnitude; float dmg = Mathf.Clamp(dist / explosionRange, 0.0f, 1.0f); Ballast bal = c.GetComponent <Ballast>(); if (bal != null) { bal.CurrentHp -= damage * dmg * dmg; Debug.Log("Ballast: " + (damage * dmg * dmg)); } ShipBallaster shipBal = c.GetComponent <ShipBallaster>(); if (shipBal != null) { shipBal.CurrentHp -= damage * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp) * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp); Debug.Log("ShipBal damage: " + (damage * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp) * (1.0f - shipBal.sumCurrHp / shipBal.sumMaxHp))); } } StartCoroutine(Destruction()); }