
236
|
第
7
章
7.15
在物体上添加推进器
问题
我们需要让物体在沿某个方向一直运动。
解决方案
首先,在你的
SKScene
子类中,需要添加一个属性:
var lastTime = 0.0
然后在场景的
update
方法中,应用一个外力和扭矩:
override func update(_ currentTime: TimeInterval) {
if self.lastTime == 0 {
self.lastTime = currentTime
}
let deltaTime = currentTime - self.lastTime
if let node = self.childNode(withName: "Box") {
node.physicsBody?.applyForce(CGVector(dx: 0 * deltaTime,
dy: 10 * deltaTime))
node.physicsBody?.applyTorque(CGFloat(0.5 * deltaTime))
}
}
讨论
在
SKScene
子类中的
update:
方法在每个动画帧,也就是每次物理模拟和渲染之前,
都会被调用。利用这个机会,我们可以不断地向物体施加作用力。
update
方法有一个参数
currentTime
,其类型为
float
。这个参数代表了当前系统时
间,单位为秒。如果要对物体每一秒都施加相同的力,我们需要算出每一帧需要花