私のプロジェクトでは、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()
}
}
上記のコードから始めて、2 つのエラーが発生します。1 つは のエラー、もう 1println
つは の呼び出しのエラーapplyRecurringForce()
です。
アプローチ 1 : 強制的なアンラップはありません...
1) println エラーは、"オプションの型 'SKPhysiceBody' の値がアンラップされていません。'!' を使用するつもりでしたか? また '?'?" そして、アンラップを強制することを提案し
ます 2) 呼び出しは「引数なしで 'applyRecurringForce' を呼び出せません」を返します
アプローチ2:「!」を追加します 提案された解決策に従ってください...
1) println エラーは前のアプローチと同じです": "オプションの型 'SKPhysiceBody' の値はラップされていません。「!」を使用するつもりでしたか? または '?'?" であり、再びアンラップを強制することを提案する
2) 呼び出しは、以前と同じエラーを返します。
Approach3 : だから私は "physicsBody!!" を使って連鎖をたどります。オーバーライド関数の両方の行で。今回は、2 つのエラーのうちの 1 つが削除されました...
1) println エラーがなくなりました
2) 呼び出しは、「'SKPhysicsBody には 'applyRecurringForce' という名前のメンバーがありません」を返します
呼び出しをコメントアウトすると、
physicsNodeName: タイプ:presentedObject:[ 名前:'rocket1' 位置:{56, 294} 蓄積フレーム:{{16.849998474121094, 280.20001220703125}, {78.300003051757812, 27.5999755859375}}]
誰が何が起きているのか考えていますか?? この二重のアンラップは、私には非常に奇妙に見えます。