コード例 #1
0
    public void VolumeChanged(DialInteractable dial)
    {
        float ratio = dial.CurrentAngle / dial.RotationAngleMaximum;

        m_VolumeRatio = ratio;

        Tune();
    }
コード例 #2
0
    public void TuningChanged(DialInteractable dial)
    {
        //off
        if (dial.CurrentAngle < 0.01f)
        {
            MusicSource.Stop();
            NoiseSource.Stop();
        }
        else if (!MusicSource.isPlaying)
        {
            MusicSource.Play();
            NoiseSource.Play();
        }

        if (MusicClips.Length == 0)
        {
            return;
        }

        float ratio    = dial.CurrentAngle / dial.RotationAngleMaximum;
        float stepSize = dial.RotationAngleMaximum / MusicClips.Length;

        float stepRatio = dial.CurrentAngle / stepSize;
        int   closest   = Mathf.RoundToInt(stepRatio);

        float dist = Mathf.Abs(closest - stepRatio) / 0.5f;

        if (closest == 0)
        {
            dist = 1.0f;
        }
        else
        {
            AudioClip c = MusicClips[closest - 1];

            if (c != MusicSource.clip)
            {
                int sample = MusicSource.timeSamples;
                MusicSource.clip        = c;
                MusicSource.timeSamples = sample;
            }
        }

        m_TuningRatio = 1.0f - dist;

        Tune();
    }
コード例 #3
0
 public void DialChanged(DialInteractable dial)
 {
     m_Renderer.GetPropertyBlock(m_Block);
     m_Block.SetColor(m_ColorId, Color.Lerp(Color.black, Color.white, dial.CurrentAngle / dial.RotationAngleMaximum));
     m_Renderer.SetPropertyBlock(m_Block);
 }