我是编程和Spritekit的新手,想探究毫秒数与帧率之间的关系,以及update函数如何作为两者之间的中介。
帧率与毫秒数
实际上,帧率和时间之间的主要区别在于时间始终保持一致,而帧率却不然(由于图形处理程序过于繁重,可能会下降)。但是,通常在SKScene的update事件中检查和设置时间(每帧调用一次),因此我正在尝试弄清楚在不知道一秒钟有多少帧的情况下如何正确计算时间。
示例
我目前正在查看太空射击游戏的更新事件,在这个游戏中,update函数负责在生成另一个外星人之前计算时间间隔。您可以在此处查看完整代码:http://www.globalnerdy.com/2014/08/10/a-simple-shoot-em-up-game-with-sprite-kit-and-swift-part-one-last-things-first-the-complete-project/
帧率与毫秒数
实际上,帧率和时间之间的主要区别在于时间始终保持一致,而帧率却不然(由于图形处理程序过于繁重,可能会下降)。但是,通常在SKScene的update事件中检查和设置时间(每帧调用一次),因此我正在尝试弄清楚在不知道一秒钟有多少帧的情况下如何正确计算时间。
示例
我目前正在查看太空射击游戏的更新事件,在这个游戏中,update函数负责在生成另一个外星人之前计算时间间隔。您可以在此处查看完整代码:http://www.globalnerdy.com/2014/08/10/a-simple-shoot-em-up-game-with-sprite-kit-and-swift-part-one-last-things-first-the-complete-project/
// Called exactly once per frame as long as the scene is presented in a view
// and isn't paused
override func update(currentTime: CFTimeInterval) {
var timeSinceLastUpdate = currentTime - lastUpdateTime
lastUpdateTime = currentTime
if timeSinceLastUpdate > 1 {
timeSinceLastUpdate = 1.0 / 60.0
lastUpdateTime = currentTime
}
updateWithTimeSinceLastUpdate(timeSinceLastUpdate)
}
问题
我似乎无法弄清楚为什么timeSinceLastUpdate被设置为1.0 / 60。我知道这与帧率和秒之间的协调有关,但有人能向我解释一下吗?另外,为什么我们可以使用小数?我以为时间间隔的类型是Int。
更重要的是,这样做的目的是为了防止游戏在帧率下降时减速吗?谢谢您的阅读!