building falling from orbit sound

This commit is contained in:
Ian Woods 2026-07-06 23:56:45 -07:00
parent ffe38ed8b1
commit 4a37d3747c
7 changed files with 109 additions and 1 deletions

View file

@ -0,0 +1,46 @@
// Assets/_Project/Scripts/Combat/TowerFallingSound.cs
using TD.Audio;
using TD.Gameplay;
using UnityEngine;
namespace TD.Combat
{
/// <summary>
/// Local-only audio for the tower falling from the sky. Attached to
/// <see cref="BuildSiteVisual"/> (not <see cref="TowerInstance"/>, which doesn't exist
/// yet) and polled every frame: plays a sound on every peer once construction has
/// <see cref="triggerSecondsBeforeCompletion"/> seconds or less remaining, so the whoosh
/// leads the tower's actual fall/land animation (see <see cref="TowerLandingVisual"/>,
/// which starts once <see cref="BuildSiteVisual"/> is replaced by the real
/// <see cref="TowerInstance"/> at construction-complete).
/// </summary>
[RequireComponent(typeof(BuildSiteVisual))]
public class TowerFallingSound : MonoBehaviour
{
[SerializeField] private SoundConfig fallingSound;
[Tooltip("Sound fires once remaining construction time drops to this many seconds " +
"or less.")]
[SerializeField] private float triggerSecondsBeforeCompletion = 1f;
private BuildSiteVisual buildSiteVisual;
private bool played;
private void Awake()
{
buildSiteVisual = GetComponent<BuildSiteVisual>();
}
private void Update()
{
if (played || buildSiteVisual == null) return;
if (buildSiteVisual.CurrentStage != BuildStage.Constructing) return;
if (buildSiteVisual.ComputeRemainingSeconds() <= triggerSecondsBeforeCompletion)
{
played = true;
AudioManager.Instance?.Play(fallingSound.clip, AudioCategory.UI, fallingSound.RandomPitch(), fallingSound.volume);
}
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5712fbfba2f64c3aa653bebe31773d54
timeCreated: 1783406173