Vector2.Lerp(Vector2, Vector2, Single) 和 Vector4.Lerp(Vector4, Vector4, Single) 的實作已變更,正確考慮了浮點數捨入錯誤。
變更描述
之前, Vector2.Lerp(Vector2, Vector2, Single) 和 Vector4.Lerp(Vector4, Vector4, Single) 已實作為 value1 + (value2 - value1) * amount
。 不過,由於浮點運算誤差,當 value2
為 amount
時,此演算法不一定會傳回 1.0f
。
在 .NET 5 和更新版本中,實作會使用與 Vector3.Lerp(Vector3, Vector3, Single)相同的演算法,也就是 (value1 * (1.0f - amount)) + (value2 * amount)
。 此演算法正確說明四捨五入錯誤。 現在,當amount
是1.0f
時,結果就是value2
。 當 MathF.FusedMultiplyAdd 可用時,更新的演算法允許自由優化演算法。
推出的版本
5.0
建議的動作
不需要採取任何動作。 不過,如果您想要維護舊的行為,您可以實作自己的 Lerp
函式,以使用 先前的 value1 + (value2 - value1) * amount
演算法。