目前我正在编写一个简单的2D游戏引擎(仅仅因为我想这样做,我知道已经有很多很棒的游戏引擎)
但这只是顺便说一句......
我的实际问题:
我使用update()和draw()等方法获得了正常的游戏循环。 现在我想显示一个精灵动画(只有3帧),但它的逻辑,我有更多的fps比3(约~90.000),但我不希望动画播放速度与此一样快。我希望在一秒钟内回放完成。所以现在我的问题是:最好的方法是什么?我如何将这些帧速率一起翻译?我知道我可以做一些事情,比如将我的实际FPS除以我的动画得到的帧,并取结果知道有多少帧我必须等到我能展示下一帧,但我不喜欢这样。 所以我需要你们的一些意见。
非常感谢您阅读。
答案 0 :(得分:0)
创建一个计时器,每30秒FPS性能每1/30秒触发一次,然后在该回调中进行绘制。 impl可能需要根据绘制时间和其他问题调整回调时间。重点是你的动画代码应该只需要根据时间偏移(即显示回调被调用的次数)找出动画的“帧”。只要渲染时间快速完成,渲染就会以均匀平滑的间隔开始,那么动画效果会很好。
答案 1 :(得分:0)
对于每个通过的帧,计算增量时间(当前 - 最后一帧之间的时间)并将其添加到计数器,然后您可以使用此计数器根据您想要的速度推进帧。
即:如果你希望你的动画每0.5秒前进一帧,你应该为每一帧添加增量时间,一旦它达到(或通过)500毫秒< - > 0.5秒,然后你可以推进框架。
通过这种方式,您可以考虑意外的快/慢帧并获得一致的动画。