我需要將下面的代碼從使用lerp轉換為使用cubic easing in,但我不知道如何處理cubic easing in函式回傳的浮點數,因為我使用的是Vector3而不是浮點數。誰能給我一個提示呢?
if (Vector3.Distance(activeTween.Target.position, activeTween.EndPos) > 0.1f)
{
float fraction = (Time.time - activeTween.StartTime) / activeTween.Duration。
activeTween.Target.position = Vector3.Lerp(activeTween.StartPos, activeTween.EndPos, fraction)。
}
uj5u.com熱心網友回復:
你可能應該只是用它來代替你在Vector3.Lerp中的fraction。
Lerp只是向量的線性插值,即0.3意味著從一個30%,從另一個70%。如果我們想要非線性插值,我們可以直接對輸入值應用一些任意的函式。例如,0.3可以被轉換為0.027,然后可以作為Lerp的輸入,得到2.7%/97.3%的混合。
uj5u.com熱心網友回復:
你需要一個在開始時為0,在結束時為1的立方函式。 我想試試這樣的方法:
public float EaseIn(float t)
{
return t * t * t。
}
if (Vector3.Distance(activeTween.Target.position, activeTween.EndPos) > 0.1f)
{
float fraction = (Time.time - activeTween.StartTime) / activeTween.Duration。
activeTween.Target.position = Vector3.Lerp(activeTween.StartPos, activeTween.EndPos, EaseIn(fraction))。
}
假設fraction已經從0到1了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329100.html
標籤:
上一篇:統一中的放大和縮小
