Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Implementeringen av Vector2.Lerp(Vector2, Vector2, Single) och Vector4.Lerp(Vector4, Vector4, Single) ändrades för att korrekt kunna hantera ett flyttalsrundningsfel.
Ändra beskrivning
Tidigare, Vector2.Lerp(Vector2, Vector2, Single) och Vector4.Lerp(Vector4, Vector4, Single) implementerades som value1 + (value2 - value1) * amount. Men på grund av ett flyttalsrundningsfel returnerar value2 den här algoritmen inte alltid när amount är 1.0f.
I .NET 5 och senare använder implementeringen samma algoritm som Vector3.Lerp(Vector3, Vector3, Single), som är (value1 * (1.0f - amount)) + (value2 * amount). Den här algoritmen hanterar korrekt avrundningsfelet. Nu, när amount är 1.0f, är resultatet exakt value2. Den uppdaterade algoritmen möjliggör också att den kan optimeras fritt med MathF.FusedMultiplyAdd när det är tillgängligt.
Version lanserad
5,0
Rekommenderad åtgärd
Ingen åtgärd krävs. Men om du vill behålla det gamla beteendet kan du implementera din egen Lerp funktion som använder den tidigare algoritmen value1 + (value2 - value1) * amountför .