【发布时间】:2021-10-01 07:20:54
【问题描述】:
我目前正在使用setInterval( () => {}, 16 ) 以 60 fps 运行我的代码,但这会使代码以 62.5 fps 运行,这使得游戏动作以每秒几帧的速度向前跳跃两倍。使用间隔 17 会使游戏移动每隔一段时间冻结一帧。
如何才能真正以 60fps 的速度运行代码以获得最大的流畅度?
【问题讨论】:
-
1000/60呢? -
使用 JS 游戏引擎,如 Babylon.js / Phaser 3 / 等 -> html5gamedevs.com
setInterval可以漂移。 -
帧率取决于代码的速度和运行代码的机器。您不能只设置一个计时器并期望在每台设备上都具有相同的帧速率。
-
@tempacc 很好,但为什么要重新发明轮子呢?有时你必须承认你的方法很糟糕,但有更好的解决方案。
-
@Marc 好吧,我用 Javascript 编写游戏以使其尽可能轻巧,(并学习画布),是的,这种方法很糟糕,但我想我会在不重写的情况下让它顺利进行整场比赛。 (将使用 Window.requestAnimationFrame 与 0 和 deltatime)
标签: javascript setinterval frame-rate