'重力'在Javascript/HTML5游戏中无法正常工作

Sco*_*ott 3 javascript

我正在用javascript/html5编写一个简单的游戏,我正在尝试实现"引力".

我的代码有点像这样:

gravity = 4;
acceleration = 1.1;

function gameLoop() {

  gravity = gravity*acceleration;

  if (characterPositionY < 600)
    characterPositionY = characterPositionY + gravity;

  setTimeout(gameLoop,1000/30);
}
Run Code Online (Sandbox Code Playgroud)

数字"600"是屏幕的底部,"地面",如果你愿意的话,玩家应该停止下降.

不幸的是,由于重力使得角色在每个循环周期中下降至少4个像素(并且增加)......角色通常会停止在地面之前或之前.像这样,例如:

[1] characterPositionY是590

- 加4

[2] characterPositionY是594

- 加4

[3] characterPositionY是598

- 加4

[4] characterPositionY是602

......过去了.

我以前从来没有真正做过任何游戏,而我只是随着时间的推移而全力以赴.可能有更好的方法来解决这个问题.

Pau*_*aul 5

将您的测试更改为:

if (characterPositionY + gravity < 600)
    characterPositionY = characterPositionY + gravity;
else
    characterPositionY = 600;
Run Code Online (Sandbox Code Playgroud)