共用方式為


Vector2.Lerp 與 Vector4.Lerp 的行為變更

Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single) 的實作已變更,正確考慮了浮點數捨入錯誤。

變更描述

之前, Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single) 已實作為 value1 + (value2 - value1) * amount。 不過,由於浮點運算誤差,當 value2amount 時,此演算法不一定會傳回 1.0f

在 .NET 5 和更新版本中,實作會使用與 Vector3.Lerp(Vector3, Vector3, Single)相同的演算法,也就是 (value1 * (1.0f - amount)) + (value2 * amount)。 此演算法正確說明四捨五入錯誤。 現在,當amount1.0f時,結果就是value2。 當 MathF.FusedMultiplyAdd 可用時,更新的演算法允許自由優化演算法。

推出的版本

5.0

不需要採取任何動作。 不過,如果您想要維護舊的行為,您可以實作自己的 Lerp 函式,以使用 先前的 value1 + (value2 - value1) * amount演算法。

受影響的 API