| 12345678910111213141516171819202122232425262728293031 |
- 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<blockScript>(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);
- }
- }
- }
|