幾小時前我問了一個類似的問題,但我認爲在這個問題中有太多的信息,所以我刪除了那一個,並使這一個更相關。減速不按預期工作
我試圖移動一個對象在指定時間內加速度遞減,但在對象到達目的地之前加速度達到0。
我計算加速這樣的:
//Linear acceleration starts at 0 and finishes at 2.
acceleration = this.elapsed/(this.duration/2.0f);
加速度爲0和2之間的值取決於有多少時間已過。經過時間接近(總)持續時間時,該值將接近2。
所以計算減速,我會做:
//Linear deceleration starts at 2 and finishes at 0.
acceleration = 2.0f - this.elapsed/(this.duration/2.0f);
這似乎工作得很好,但減速的對象永遠不會到達目的地,大約99%的elapsedTime變得比總時長的距離,導致加速度變爲負值。換句話說,它似乎以1%的速度減速過快。
原始加速度完美地工作,線速度也是如此。這只是減速不能正常工作。
我做錯了什麼?
感謝
請說明你表達的數量(加速度,速度,位移,時間?)以及相關變量的單位。正如我現在讀的那樣,你正在設置加速=時間/時間,這是沒有意義的。 –
什麼樣的數據類型已經過了,持續時間是多少?他們也漂浮或是整數? – mclark1129
在我的代碼中,目前持續時間是2000年,這意味着對象需要2秒才能到達目的地。 已用時間表示物體離開初始位置後已移動了多長時間。所以當它移動1秒時,加速度將會是1.0f。當它移動0.5f秒時,加速度將是0.5等。然後,我將其反轉爲減速,所以在0.5秒之後,如果物體正在減速,則加速度爲1.5f。這使我的平均加速度爲1.0,因此它在到達目的地的同時沒有加速的物體。 – Orujimaru