public void OnCollisionEnter(Collision collision) { if (!Missile || HasExplode) { return; } HasExplode = true; Destroy(Instantiate(ExplosionEffect, transform.position, transform.rotation), 2f); GetComponent <AudioSource>().Stop(); GetComponent <AudioSource>().PlayOneShot(ExplosionClip); Collider[] collidersToDestroy = Physics.OverlapSphere(transform.position, range); foreach (Collider destroyObject in collidersToDestroy) { Destructible d = destroyObject.GetComponent <Destructible>(); if (d != null) { d.DestroyGM(); } } Collider[] collidersToAddForece = Physics.OverlapSphere(transform.position, range); foreach (Collider nearbyObject in collidersToAddForece) { Rigidbody rb = nearbyObject.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(ExplosionForce, transform.position, range); } } Collider[] collidersToChangeHealth = Physics.OverlapSphere(transform.position, range); foreach (Collider nearbyObject in collidersToChangeHealth) { PlayerManager pm = nearbyObject.gameObject.GetComponentInChildren <PlayerManager>(); if (pm != null) { pm.MinusHealth(damage); } } GetComponent <MeshRenderer>().enabled = false; Destroy(Particles, 4f); Destroy(gameObject, 2f); }
void Explode() { GetComponent <AudioSource>().PlayOneShot(ExplosionSound); GameObject g = Instantiate(ExplosionPrefab, transform.position, transform.rotation); Destroy(g, 3f); Collider[] collidersToDestroy = Physics.OverlapSphere(transform.position, range); foreach (Collider destroyObject in collidersToDestroy) { Destructible d = destroyObject.GetComponent <Destructible>(); if (d != null) { d.DestroyGM(); } } Collider[] collidersToAddForece = Physics.OverlapSphere(transform.position, range); foreach (Collider nearbyObject in collidersToAddForece) { Rigidbody rb = nearbyObject.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(explosionForce, transform.position, range); } } Collider[] collidersToChangeHealth = Physics.OverlapSphere(transform.position, range); foreach (Collider nearbyObject in collidersToChangeHealth) { PlayerManager[] pm = nearbyObject.gameObject.GetComponentsInChildren <PlayerManager>(); foreach (var a in pm) { if (a == null) { continue; } a.MinusHealth(damage); } } foreach (Collider nearbyObject in collidersToChangeHealth) { FragGrenade fr = nearbyObject.gameObject.GetComponentInChildren <FragGrenade>(); if (fr != null) { fr.explode = true; } } foreach (Collider nearbyObject in collidersToChangeHealth) { EnemyStats es = nearbyObject.GetComponent <EnemyStats>(); if (es != null) { es.Damage(damage); } } Destroy(gameObject, 1f); }