动画与 FPS 同步

Animation synchronisation with FPS

目前我正在编写一个简单的 2D 游戏引擎(只是因为我想这样做,我知道已经有很多很棒的了)

但这只是顺便说一句...

我的实际问题:

我得到了一个正常的游戏循环,其中包含 update() 和 draw() 等方法。 现在我想显示 Sprite 动画(仅 3 帧),但合乎逻辑的是,我得到的 fps 多于 3(约 ~90.000),但我不希望动画播放得这么快。我希望在一秒钟内完成一次回放。所以现在我的问题是:实现这一点的最佳方法是什么?我怎样才能一起翻译这些帧率?我知道我可以做一些事情,比如将我的实际 FPS 与我的动画得到的帧相除,然后得到结果来知道我必须等待多少帧才能显示下一帧,但我不喜欢那样。 所以我需要你们的一些意见。

非常感谢您的阅读。

创建一个定时器,每 1/30 秒触发一次以达到 30 FPS 的性能,然后在该回调中进行绘图。 impl可能需要根据绘制时间等问题调整回调时间。要点是,您的动画代码应该只需要根据时间偏移量(也就是调用显示回调的次数)来确定动画的 "frame" 是什么。只要渲染时间快,渲染开始的时间间隔均匀平滑,动画看起来就不错。

对于通过的每一帧,计算增量时间(当前帧与最后一帧之间的时间)并将其添加到计数器中,然后您可以使用此计数器根据您想要的速度来推进帧。

即:如果你想让你的动画每 0.5 秒前进一帧,你应该为每一帧添加增量时间,一旦它达到(或超过)500 毫秒 <-> 0.5 秒,那么你可以前进帧.

这样您就可以解决意外快/慢的帧并获得一致的动画。