非常欢迎您使用内置函数。否则,如果您想要更好的控制,您可以使用调整后的 sigmoid 函数。通常,sigmoid 函数如下所示:(https://www.wolframalpha.com/input/?i=plot+(1%2F(1%2Be%5E(t)))+from+-5+to+5)
但是您希望您的淡出功能看起来更像这样:(https://www.wolframalpha.com/input/?i=plot+(1%2F(1%2Be%5E(3t-4))+from+-5 +至+5)
其中 x 是 (CurrentFrames / TotalFrames) * 3 的比率,y 是输出量。
但是我是如何从第一张图到第二张图的呢?尝试使用 wolfram alpha 中的指数输入 (e^(play with this)) 的缩放器(即 3x 或 5x)和偏移量(即 (3x - 4) 或 (3x - 6)),以了解您的感受希望曲线看起来。您不必将曲线的交点与具有特定数字的轴对齐,因为您可以在代码中调整函数的输入和输出。
因此,您的代码如下所示:
if (CurrentFrames > 0) {
// I'd recommend factoring out and simplifying this into a
// function, but I have close to zero C# experience.
inputAdjustment = 3.0
x = ((CurrentFrames / TotalFrames) * inputAdjustment);
sigmoidFactor = 1.0/(1.0 + Math.E ^ ((3.0 * x) - 4.0));
AudioSourceObject.volume = (sigmoidFactor * TotalVolume);
}
if (CurrentFrames <= 0) {
AudioSourceObject.volume = 0.00f;
return 0;
}
CurrentFrames--;