using System.Collections; using UnityEngine; namespace KD.Destro2D{ public class DoExplosion : MonoBehaviour { public float radiusCore = 0f; public float radiusOuter = 1f; public float noiseScale = 20f; public float thickness = 0.12f; public float force = 100f; void OnEnable() { Collider2D[] col = Physics2D.OverlapCircleAll(transform.position,radiusOuter); foreach(Collider2D c in col) { if(c.TryGetComponent(out var d)){ d.DynamicFracture(transform.position,radiusCore,radiusOuter,noiseScale,thickness,5); } } StartCoroutine(AddForce()); } IEnumerator AddForce() { //delay for the chunks to actually split yield return new WaitForSeconds(0.1f); //detect again, then add force Collider2D[] col = Physics2D.OverlapCircleAll(transform.position,radiusOuter); foreach(Collider2D c in col) { if(c.TryGetComponent(out var s) && c.TryGetComponent(out var rb)) { Vector2 worldChunkCentre = c.transform.TransformPoint(s.chunkCentre); Vector2 dir = worldChunkCentre - (Vector2)transform.position; rb.AddForce(dir.normalized * force); } } Destroy(this.gameObject); } } }