using UnityEngine; public class ExplosiveHitEffect : BallEffectBase { private ExplosiveHitEffectDefinition Config => definition as ExplosiveHitEffectDefinition; public override void OnHitBlock(BallScript ball, blockScript hitBlock, Collision2D collision) { ExplosiveHitEffectDefinition config = Config; if (config == null) return; Vector2 center = collision.GetContact(0).point; blockScript[] blocks = FindObjectsByType(FindObjectsSortMode.None); for (int i = 0; i < blocks.Length; i++) { blockScript block = blocks[i]; if (block == null) continue; float distance = Vector2.Distance(center, block.transform.position); if (distance > config.Radius) continue; float t = Mathf.Clamp01(distance / config.Radius); float splashDamage = Mathf.Lerp(config.MaxDamageAtCenter, config.MinDamageAtEdge, t); block.ApplyDamage(splashDamage); } } }