【发布时间】:2015-06-20 11:00:40
【问题描述】:
在我的项目中,我使用一个名为 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) 调用返回“Cannot invoke 'applyRecurringForce' with no arguments”
Approach2:我添加“!”遵循建议的解决方案...
1) println 错误和之前的方法一样": "Value of optional type 'SKPhysiceBody' not unwrapped;你的意思是用'!'还是'?'?”它再次建议我强制展开
2) 调用返回与之前相同的错误:“Cannot invoke 'applyRecurringForce' with no arguments”
Approach3:所以我遵循这个链条,使用“physicsBody!!”在覆盖函数的两行中。这一次,两个错误之一被删除...
1) println 错误消失了
2)调用返回“'SKPhysicsBody 没有名为'applyRecurringForce'的成员”
如果我注释掉电话,我会得到
physicsNodeName:类型:表示对象:[名称:'rocket1'位置:{56, 294} 累积帧:{{16.849998474121094, 280.20001220703125}, {78.300003051757812, 27.5999755859375}}]
有人知道发生了什么吗?这种双重展开对我来说看起来很奇怪。
【问题讨论】:
标签: sprite-kit skphysicsbody forced-unwrapping