我正在用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