using UnityEngine; namespace Solid.Abstracts { public abstract class AreaOfEffect : MonoBehaviour { [SerializeField] private ParticleSystem _particleSystem; [SerializeField] private AudioClip _audioClip; [SerializeField] private float _duration = 0.5f; private void OnCollisionEnter(Collision other) { if (!IsInsideOfEffectArea(other.collider)) return; _particleSystem.Play(); AudioSource.PlayClipAtPoint(_audioClip, transform.position, _duration); ApplyEffect(); } protected abstract bool IsInsideOfEffectArea(Collider other); private void ApplyEffect() { // apply effect here } } }