/// <summary> /// Plays the river game over sound (when character is carried away by river). /// </summary> public void PlayRiverGameOverSound() { if (m_riverSound == null) { return; } // Change river sound to 2D m_riverSound.SetSpatialBlend(0.0f); // Start river sound anim m_timeSinceRiverAnimStateChange = 0.0f; m_riverAnimState = RiverSoundAnimState.ToGameOver; }
/// <summary> /// Updates the river sound animation. /// </summary> private void UpdateRiverSoundAnim() { if (m_riverSound == null) { return; } switch (m_riverAnimState) { case RiverSoundAnimState.Normal: // Do nothing break; case RiverSoundAnimState.ToGameOver: m_timeSinceRiverAnimStateChange += Time.deltaTime; m_riverSound.SetVolume(Mathf.Lerp(m_riverNormalVolume, m_riverGameOverVolume, m_timeSinceRiverAnimStateChange / m_riverVolumeChangeTime)); if (m_timeSinceRiverAnimStateChange > m_riverVolumeChangeTime) { m_timeSinceRiverAnimStateChange = 0.0f; m_riverAnimState = RiverSoundAnimState.GameOver; } break; case RiverSoundAnimState.GameOver: m_timeSinceRiverAnimStateChange += Time.deltaTime; if (m_timeSinceRiverAnimStateChange > m_riverVolumeChangeTime) { m_timeSinceRiverAnimStateChange = 0.0f; m_riverAnimState = RiverSoundAnimState.ToNormal; } break; case RiverSoundAnimState.ToNormal: m_timeSinceRiverAnimStateChange += Time.deltaTime; m_riverSound.SetVolume(Mathf.Lerp(m_riverGameOverVolume, m_riverNormalVolume, m_timeSinceRiverAnimStateChange / m_riverGameOverVolumeTime)); m_riverSound.SetSpatialBlend(Mathf.Lerp(0.0f, 1.0f, m_timeSinceRiverAnimStateChange / m_riverGameOverVolumeTime)); if (m_timeSinceRiverAnimStateChange > m_riverGameOverVolumeTime) { // Restore 3D sound volume m_riverSound.SetVolume(m_riverInitialVolume); m_timeSinceRiverAnimStateChange = 0.0f; m_riverAnimState = RiverSoundAnimState.Normal; } break; } }