我正在使用 Mathf.Lerp 为圆形进度条设置动画。
进度条是一个具有名为“FillAmount”的属性的图像:
0 means not filled
1 means filled
连同填充属性“Radial 360”,它的作用有点像时钟。
由于某种原因,错过了执行 Lerp 函数后的最终值,我不知道如何改进该函数以达到预期的结果。
我的圆形进度条是 3/4 环,这就是为什么我将 uFrom 和 uTo(介于 0 到 100 之间)乘以 0.75。
这是我的代码:
public IEnumerator AnimateHealthChange(int uFrom, int uTo)
{
float fFade = 0.25f;
float fOld = ((uFrom * 0.75f) / 100);
float fNew = ((uTo * 0.75f) / 100);
Debug.Log("Changing from " + fOld.ToString() + " to " + fNew.ToString());
for (float t = 0.01f; t < fFade; t += Time.deltaTime)
{
ImageHealthRing.fillAmount = Mathf.Lerp(fOld, fNew, Mathf.Min(1, t / fFade));
yield return null;//
}
Debug.Log("Final filling after for-next-statement: " + ImageHealthRing.fillAmount.ToString());
yield return null;
}
例如,当我调用 AnimateHealthChange(0, 100) 时,我得到以下日志输出:
Changing from 0 to 0.75
Final filling after for-next-statement: 0.6807814
我预计最终结果为 0.75,而不是 0.6807814。
有人看到我的错误,还是我错误地使用了 Lerp?