2014-04-19 116 views
0

嘿,我想找出在我的程序中實現重力的最好方法,那就是彈跳球。該程序使用一種被稱爲每秒50次的方法(玩家在滴答的速率),在這種方法中我稱之爲重力法。在重力的方法我現在有Java球彈跳程序中的重力刷新每個遊戲的刻度

public void Gravity(){ 
    this.currentPositionY = this.currentPositionY + 9; 
    if (this.currentPositionY >= 581){ 
     this.currentPositionY=581; 
    } 
} 

我的代碼問題:在重力的速度不是恆定的它隨時間而變化,但我不確定如何實現時間被稱爲所以常常重心法。目前我也是這樣,讓球在581停下來,這樣它就不會落在屏幕上。當球落得越來越少時,我會如何實現更高和更短的反彈?謝謝你的時間!

回答

0

在y方向速度的方法之外有一個變量。每個滴答,增加其速度佔重力。
如果球通過邊界,將其設置爲邊界並將速度設置爲-1 *速度以使其在另一個方向上「反彈」。

也許是這樣的:

private int currentVelocityY = 0; 
private int gravity = 3; 
public void Gravity(){ 
    this.currentPositionY = this.currentPositionY + this.currentVelocityY; 
    if (this.currentPositionY >= 581){ 
     this.currentPositionY=581; 
     this.currentVelocityY = -1 * this.currentVelocityY; 
    } 
    currentVelocityY = currentVelocityY + gravity; 
} 
+1

感謝您的答覆!我離開了這一點,但在遊戲中點擊s按鈕增加了球的高度,所以我不能離開遊戲打勾時間,因爲有人可以讓程序運行一段時間,然後點擊s按鈕來增加高度和那麼球就會太快,因爲比賽已經持續了很長時間。 – Rain

+0

您可以使用增加高度的方法重置速度或在最大速度上設置上限。 – Jake

+0

好吧,聽起來不錯,非常感謝! – Rain