所以我一直在嘗試編寫一個物理模擬。我從模擬一個自由落體開始很小。我在Java中使用Java Jframe和一些來自awt庫的方法。然而,我一直面臨的問題是調整參數以使我的模擬更加生活。我的遊戲while循環以恆定的60 FPS運行,這意味着每個循環都需要16 ms。每次我更新,我執行這些法律:物理模擬,將像素調整爲米?
this.velX = this.velX + (accX)*delta;
this.velY = this.velY + (accY) * delta ;
this.velY = this.velY * 0.9;
this.x = this.x + (int) ((this.velX) * delta);
this.y = this.y + (int) ((this.velY)* delta);
然而,由於我轉換爲int的值總是又回到了0,因爲它們非常小。而形狀的繪製方法只接受int(我認爲這是可以理解的,對吧?)我想知道是否會有解決方案?球會卡住,它的運動不會明顯(如果它移動的話)。
我試着將delta傳遞爲1,它很好地工作,但它太快了,但我認爲它不現實。因此,如果有人能夠給我關於這個問題的一般想法,那將是非常有用的。
「16毫升秒」 - 16毫秒?我想這應該是「毫秒」=毫秒? – Fildor
這聽起來像你正在從渲染他們的同一個地方讀你的座標 - 這正是你眼中問題的原因。嘗試將座標存儲在一些專用對象中,這些對象可以以您實際需要的任何形式接受它們(即以'double'或其他形式),然後在渲染它們時僅轉換爲'int'。 –
是的,抱歉,我編輯了它。 – Robot0110