我正在使用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
-添加4-
[2] characterPositionY为594
-添加4-
[3] characterPositionY为598
-添加4-
[4] characterPositionY为602
...超过了地面。
我以前从未制作过任何游戏,我只是随心所欲地进行创作。可能有更好的方法来处理这个问题。