我試圖在兩個基於計時器的對象之間進行一個目標立體掃描器。基於計時器的基於計時器的立體對象
目前,我有以下代碼:
float distCovered = (Time.time - waitTime) * speed;
float fracJourney = distCovered/journeyLength;
if (_moveDown == false)
{
if (startTime + waitTime < Time.time)
{
transform.position = Vector3.Lerp(start.position, end.position, fracJourney);
if (transform.position == end.position)
{
Debug.Log("going down");
_moveDown = true;
transform.position = Vector3.Lerp(end.position, start.position, fracJourney);
}
}
}
if (_moveDown == true)
{
float distCovered1 = (Time.time - goDowntimer) * speed;
float fracJourney1 = distCovered1/journeyLength;
transform.position = Vector3.Lerp(end.position, start.position, fracJourney1);
if (transform.position == start.position)
{
Debug.Log("going up");
// waitTime = 20;
_moveDown = false;
}
}
此代碼是在我的更新功能,並連接到我的每一個對象,我要上下移動的。每個物體都可以獨立設置等待時間,因此我可以在5秒後移動1次,在10次後移動另一個。
然後,每個目標等待幾秒鐘,然後向下移動。但是,這種運動並不順暢,並且往往會跳起一定的距離。但是,當它回到底部時,它會在_movedown布爾之間發生瘋狂,並且不會移動。
有誰知道我能解決這些問題的方法嗎?
我知道Mathf.PingPong方法不斷地將對象移回兩點之間,但是這不會讓我暫停每個部分的移動。雖然,如果有人知道我可以做到這一點的方式,請讓我知道。可能
transform.position = Vector3.Lerp(start.position, end.position, fracJourney * Time.deltaTime);
甚至這樣:
請問,對於我們身後的語言障礙,你會解釋一下「lerp」這個詞嗎? – ppeterka
[線性插值](http://docs.unity3d.com/Documentation/ScriptReference/Vector3.Lerp.html) – GalacticCowboy
@GalacticCowboy謝謝,我試過谷歌翻譯第一(沒有結果),並沒有通過代碼讀取在發表評論之前。 Vector3d.Lerp()的API文檔顯示了神祕:)我認爲這是一個我不知道的動詞... – ppeterka