
18
|
第
1
章
//
刷新所有物理组件
physicsComponentSystem.update(deltaTime:0.033)
1.5
计算屏幕的帧刷新时间
问题
我们需要计算游戏在两次帧刷新之间的时间是多少秒。
解决方案
首先来看看是什么对象会对游戏帧刷新时间感兴趣。这些对象可能包括视图控制器、
SKScene
、
GLKViewController
,或者自定义对象。
在这些对象中,需要创建一个实例变量:
class TimeKeeper {
var lastFrameTime : Double = 0.0
}
然后,当游戏刷新时,用当前时间的毫秒数减去
lastFrameTime
的当前值,即可得
到从上次刷新到这次刷新的时间差即“每帧耗时”。
如果想以某种频率或速度进行一些动作(例如,每隔
1
秒移动
3
米),可以用每帧
耗时乘以运动速度:
func update(currentTime : Double) {
//
计算从上次帧刷新到本次帧刷新之间的时间差
let deltaTime = currentTime - lastFrameTime
//
移动速度为:每秒三个单位
let movementSpeed = 3.0
//
用
deltaTime
乘以移动速度即可得到这一帧应该移动多少距离
//
即公式:时间
*
速度
=
移动距离
someMovingObject.move(distance: movementSpeed * deltaTime)
//
将当前时间保存到
lastFrameTime ...