HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了xcode – SpriteKit的更新功能:时间与帧速率大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是编程和Spritekit的新手,我有兴趣探索毫秒和之间的关系.帧速率,以及如何将更新功能用作两者之间的中介.

帧率与毫秒

从本质上讲,帧速率和时间之间的主要区别在于时间总是一致的,而帧速率则不然(由于密集的图形程序,它可能会下降).但是,通常在SKScene的更新事件(每帧调用一次)期间检查和设置时间,所以我想知道如何正确计算时间,当你不知道一秒钟内有多少帧时.

我目前正在观看太空射击游戏的更新事件,其中更新功能负责计算产生另一个外星人之前的时间间隔.您可以在此处查看完整代码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 @R_618_9531@e(currentTime: CFTimeInterval) {
    var timeSinceLast@R_618_9531@e = currentTime - lastupdatetiR_825_11845@e
    lastupdatetiR_825_11845@e = currentTime
    if timeSinceLast@R_618_9531@e > 1 {
        timeSinceLast@R_618_9531@e = 1.0 / 60.0
        lastupdatetiR_825_11845@e = currentTime
    }
    @R_618_9531@eWithTimeSinceLast@R_618_9531@e(timeSinceLast@R_618_9531@E)
}

问题

我似乎无法弄清楚为什么timeSinceLast@R_618_9531@e被设置为1.0 / 60.我知道它与帧率和秒之间的协调有关,但有人可以向我解释这个吗?另外,为什么我们允许使用小数?我认为时间间隔属于Int类型.

更重要的是,这是为了保持游戏玩法在帧速率下降时减速?谢谢阅读!

解决方法

SpriteKit不知道一秒钟内会有多少帧,但它可以告诉你自完成绘制前一帧以来经过了多少时间.如果您的游戏代码具有任何与时间相关的逻辑,那么您就会想知道这一点.例如,你可能正在做一些像position = veLocity * timeSinceLast@R_618_9531@e来移动精灵,因为你不需要一个完整的物理引擎.

帧速率是每秒帧数:SpriteKit尝试以每秒60帧的速度运行游戏.这意味着帧之间的时间是1/60秒(约0.01667秒,或16.67毫秒). CFTimeInterval是Double的类型别名,因此它可以具有非整数值(并且需要,因为您使用的帧时间是几分之一秒).

你得到了关于帧率下降的部分,但效果是向后的.如果帧率明显下降,你实际上想减慢你的游戏速度.

如果使用像position = veLocity * timeSinceLast@R_618_9531@e这样的代码在屏幕上移动一艘宇宙飞船,如果我们连续丢弃几帧,会发生什么? timeSinceLast@R_618_9531@e的值将非常高,因此船舶将跳跃很长的距离,而不是仅仅移动一点.如果您的应用程序被暂停并且稍后返回到前台,则尤其可能发生这种情况.

代码检查自上一帧以来是否超过一秒钟,如果是,则选择继续玩游戏,就像游戏以60 fps运行一样 – 避免跳跃飞船问题.

大佬总结

以上是大佬教程为你收集整理的xcode – SpriteKit的更新功能:时间与帧速率全部内容,希望文章能够帮你解决xcode – SpriteKit的更新功能:时间与帧速率所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。