Animation 动画与FPS同步

Animation 动画与FPS同步,animation,sprite,game-engine,frame-rate,game-loop,Animation,Sprite,Game Engine,Frame Rate,Game Loop,目前我正在编写一个简单的2D游戏引擎(只是因为我想做,我知道已经有很多很棒的引擎了) 但这只是顺便说一句 我的问题是: 我用update()和draw()等方法实现了一个正常的游戏循环。 现在我想显示一个精灵动画(只有3帧),但它的逻辑是,我得到的帧数比3多(大约90.000),但我不希望动画播放得像这样快。我希望在一秒钟内完成一次回放。那么现在我的问题是:实现这一点的最佳方式是什么?如何将这些帧率一起转换?我知道我可以做一些事情,比如用我的动画得到的帧来划分我的实际FPS,然后取结果来知道我需

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

但这只是顺便说一句

我的问题是:

我用update()和draw()等方法实现了一个正常的游戏循环。 现在我想显示一个精灵动画(只有3帧),但它的逻辑是,我得到的帧数比3多(大约90.000),但我不希望动画播放得像这样快。我希望在一秒钟内完成一次回放。那么现在我的问题是:实现这一点的最佳方式是什么?如何将这些帧率一起转换?我知道我可以做一些事情,比如用我的动画得到的帧来划分我的实际FPS,然后取结果来知道我需要等待多少帧才能显示下一帧,但我不喜欢这样。 所以我需要你们的一些意见


非常感谢您的阅读。

创建一个计时器,每1/30秒触发一次,以获得30 FPS的性能,然后在该回调中进行绘图。impl可能需要根据绘制和其他问题所需的时间调整回调时间。主要的一点是,您的动画代码应该只需要根据时间偏移量(也称为调用显示回调的次数)确定动画的“帧”是什么。只要快速完成渲染时间,使渲染以均匀平滑的间隔开始,动画就会看起来很好。

对于经过的每一帧,计算增量时间(当前帧与最后一帧之间的时间)并将其添加到计数器中,然后您可以使用此计数器根据您希望的速度提前帧

i、 e:如果希望动画每0.5秒前进一帧,则应为每帧添加增量时间,一旦达到(或超过)500毫秒0.5秒,则可以前进该帧


通过这种方式,您可以考虑意外的快/慢帧,并获得一致的动画。

谢谢,这是另一个好主意,但这次不会丢失fps。