// Assets/_Project/Scripts/Combat/TeslaTowerFireSound.cs using UnityEngine; namespace TD.Combat { /// /// Local-only audio for the Tesla Coil tower. Subscribes to /// and plays a one-shot fire sound /// on every peer each time the coil discharges. /// /// /// Pure client-side — nothing here is networked. Add additional /// fields and calls here /// as the Tesla Coil gains more audio (idle hum, charge-up, etc.). /// [RequireComponent(typeof(TowerCombat))] [RequireComponent(typeof(AudioSource))] public class TeslaTowerFireSound : MonoBehaviour { [Tooltip("Sound played each time the coil discharges.")] [SerializeField] private AudioClip fireClip; [Tooltip("Pitch is randomized within this range each shot to avoid a mechanical loop.")] [SerializeField] private float minPitch = 0.93f; [SerializeField] private float maxPitch = 1.07f; private TowerCombat combat; private AudioSource audioSource; private void Awake() { combat = GetComponent(); audioSource = GetComponent(); } private void OnEnable() { if (combat != null) combat.OnAreaFired += HandleAreaFired; } private void OnDisable() { if (combat != null) combat.OnAreaFired -= HandleAreaFired; } private void HandleAreaFired(Vector3[] positions) { if (fireClip != null) { audioSource.pitch = Random.Range(minPitch, maxPitch); audioSource.clip = fireClip; audioSource.Play(); } } } }