我正在用javascript/html5編寫一個簡單的遊戲,並試圖實現「重力」。'Gravity'在Javascript/HTML5遊戲中無法正常工作
我的代碼是有點像這樣:
gravity = 4;
acceleration = 1.1;
function gameLoop() {
gravity = gravity*acceleration;
if (characterPositionY < 600)
characterPositionY = characterPositionY + gravity;
setTimeout(gameLoop,1000/30);
}
數字「600」的畫面是底部,「地」,如果你願意,玩家應該停止下跌。
不幸的是,由於重力使角色在每個循環週期內至少下降4個像素(並且增加)......角色往往會停止過去,或者在地面之前停止。像這樣,例如:
[1] characterPositionY是590
-add 4-
[2] characterPositionY是594
-add 4-
[3] characterPositionY是598
-add 4-
[4] char acterPositionY是602
...過去的地面。
我以前從來沒有真正做過任何遊戲,我只是隨着我的進展而全力以赴。有可能有更好的方法去做這件事。
你的物理公式是錯誤的。簡化一下,重力是一個恆定的向下的力,因此在每個時間步增加速度的不斷增加。因此,該公式應該讀取更多類似於「downward_speed + = gravity_acceleration」的內容。 gravity_acceleration每秒大約10米 - 將每步時間轉換爲像素的比例是由您決定的。 – Kylotan 2009-11-23 11:14:09