コード例 #1
0
 /// <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;
 }
コード例 #2
0
    /// <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;
        }
    }