Files
bansonic_beta_main/Assets/Destro2DMain/Demos/Prefabs/Scripts/DoExplosion.cs
T
2026-06-30 21:21:30 +08:00

42 lines
1.4 KiB
C#

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<Destro2DMain>(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<SplitHandler>(out var s) && c.TryGetComponent<Rigidbody2D>(out var rb))
{
Vector2 worldChunkCentre = c.transform.TransformPoint(s.chunkCentre);
Vector2 dir = worldChunkCentre - (Vector2)transform.position;
rb.AddForce(dir.normalized * force);
}
}
Destroy(this.gameObject);
}
}
}