原因:要计算timeSinceLastUpdate,您需要一个名为timeOfLastUpdate的实例变量.要实现timeOfLastUpdate,您需要在第一次更新之前将其设置为任意值,这使得第一次计算timeSinceLastUpdate不正确.你可以有一个简单的if语句来检测这个或使用optionals但是这是一个不需要的分支,如果我只是在dIDMovetoVIEw(vIEw :)中设置timeOfLastUpdate就可以避免.这就是我想要做的.
解决方法 第一次,因为UpLastUpdate将始终与其他人不同.通常,一个存储来自先前更新调用的绝对时间,并从当前调用的时间中减去它以获得timeSinceLastUpdate.如果之前的时间不存在,因为你是第一次通过渲染循环 – 它被设置为零或无穷大或负值或者你初始化它的任何标记值,只需将你的timeSinceLastUpdate设置为一些标称值即可开始.像你的帧间隔(16.67毫秒,如果你要60 fps)这样的东西是有道理的 – 你不希望游戏代码依赖于那个时间间隔做一些疯狂的事情,因为你传递零或一些巨大的价值.事实上,如果你的用户暂停并恢复游戏,那么将你的timeSinceLastUpdate标准化为理智的东西并不是一个坏主意.如果您有游戏实体(例如GameplayKit代理),其移动遵循某种位置= veLocity * timeSinceLastUpdate模型,您希望它们在您从暂停中恢复时移动一帧的时间,而不是花费五分钟的暂停时间速度和跳跃到超空间.
如果将之前的时间初始化为零,减去并标准化为预期的帧间隔,则将使用相同的代码覆盖起始和未暂停的情况.
总结以上是内存溢出为你收集整理的ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前)全部内容,希望文章能够帮你解决ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)