コード例 #1
0
    public float CalculateVolume(float interpolationTime)
    {
        switch (FadeType)
        {
        case FadeType.Linear:
            return(EasingFunctions.Linear(_fromValue, _toValue, interpolationTime));

        case FadeType.ExpoIn:
            return(EasingFunctions.ExponentialIn(_fromValue, _toValue, interpolationTime));

        case FadeType.ExpoOut:
            return(EasingFunctions.ExponentialOut(_fromValue, _toValue, interpolationTime));

        case FadeType.QuadraticIn:
            return(EasingFunctions.QuadraticIn(_fromValue, _toValue, interpolationTime));

        case FadeType.QuadraticOut:
            return(EasingFunctions.QuadraticOut(_fromValue, _toValue, interpolationTime));

        default:
            // If fade type is none or undefined, return fade factor of 1f
            Debug.LogWarning("Hey! Invalid fade type: " + FadeType.ToString());
            return(1f);
        }
    }
コード例 #2
0
ファイル: AudioPlayer.cs プロジェクト: fuzzblob/AMP-Toyz
    private float CalculateDistanceVolume(Voice voice)
    {
        float   distanceVolume = 1f;
        Vector3 headPos        = listener.transform.position;
        float   distance       = Vector3.Distance(headPos, voice.Position);
        float   time           = Mathf.InverseLerp(voice.MinDistance, voice.MaxDistance, distance);

        switch (voice.Attenuation)
        {
        case AttenuationMode.Linear:
            distanceVolume = 1f - time;
            break;

        case AttenuationMode.Logarithmic:
            distanceVolume = EasingFunctions.ExponentialOut(1f, 0f, time);
            break;

        default:
            break;
        }
        return(distanceVolume);
    }