在我的项目中,我使用一个名为 RocketMaker 的类来创建新节点。在这个类里面,我有一个函数叫做applyRecurringForce()
......
func applyRecurringForce() {
var thrust: CGVector = CGVectorMake(100, 100)
physicsBody!.applyForce(thrust)
}
我的问题是我无法从主场景访问此功能。
override func update(currentTime: NSTimeInterval) {
/* Called before each frame is rendered */
for rocketNode in rocketShips.children {
println("physicsBody: \(rocketNode.physicsBody.description)")
rocketNode.physicsBody.applyRecurringForce()
}
}
从上面的代码开始,我收到两个错误,一个是println
. ,一个是调用applyRecurringForce()
.
方法 1:没有强制展开...
1) println 错误是“可选类型 'SKPhysiceBody' 的值没有展开;你的意思是使用 '!' 或者 '?'?” 并建议我强制展开
2) 调用返回“无法调用‘applyRecurringForce’且没有参数”
方法2:我添加“!” 遵循建议的解决方案...
1) println 错误与之前的方法相同”:“可选类型 'SKPhysiceBody' 的值未展开;你的意思是用'!' 或 '?'?” 并再次建议我强制展开
2)调用返回与以前相同的错误:“无法在没有参数的情况下调用 'applyRecurringForce'”
Approach3:所以我遵循链,使用“physicsBody!!” 在覆盖函数的两行中。这一次,两个错误之一被删除...
1) println 错误消失
2) 调用返回“'SKPhysicsBody 没有名为'applyRecurringForce'的成员”
如果我注释掉电话,我会得到
物理节点名称:类型:表示对象:[名称:'rocket1'位置:{56, 294} 累积帧:{{16.849998474121094, 280.20001220703125}, {78.300003051757812, 27.5999755859375}}]
有谁知道发生了什么?这种双重展开对我来说看起来很奇怪。