iOS上のSpriteKitアプリケーションで物理的なやりとり(衝突や連絡先)の概要を表示するヘルパーメソッドを作成しています。iOS enumerateChildNodeswithNameですべての物理機関にアクセスする
私は私のヘルパー関数でaddChild()
経由(self.physicsBody = SKPhysicsBody(edgeLoopFromRect: frame)
から)の境界で、簡単なシーンを持っており、3つの単純な形状(2つの四角と丸)ウィッヒがシーンに追加され、私はすべて検索しますそれらがphysicsBodyを持っている場合は、そのカテゴリ、collisionおよびcontactTestビットマスクを出力します。
私は次のコード場合
:enumerateChildNodesWithNeme("*") { node, _ in {
print("Node: \(node.name)")
}
、私は取得のみ3つの形状が記載されている:
Node: Optional("shape_blueSquare")
Node: Optional("shape_redCircle")
Node: Optional("shape_purpleSquare")
マイシーンのphysicsBodyが返されません。私が使用している場合でも:
enumerateChildNodesWithNeme("..") { node, _ in {
print("Node: \(node.name)")
}
その後、私が取得:
Node: Optional("shape_edge")
私が使用している場合:
enumerateChildNodesWithNeme("..//") { node, _ in {
print("Node: \(node.name)")
}
私は、これは、ノードツリーを上に移動するだろうと思ったのに対し、私は、何も得ますすべての子を再帰的に返します。検索引数"//*"
は3人の子供だけを返します。
いつも、skView.showNodecount = true
で表示されるノード数は4
です。
私の質問は:シーン(シーン自体を含む)内のすべてのノードを返すenumerateChildNodesWithNameの検索引数がありますか、シーンとその子供の関係を誤解していますか?両方を検索しますか?私がself
またはそのような変形を見ると予想していたときにがnil
を返すので、後者かもしれません。
これは、それが動作する方法である、と私のコードは、すべて見つける場合シーンの物理学のボディ以外の物理的なボディは、それでいいです - 私はそれを別々に扱うことができます。私はちょうど私が他の何かを潜在的に欠いているのではないことを確認したい。 –
'print(" \(parent.children) ")'のようなものを印刷すると、常にnilになります。ここでは、暗黙の自己は 'GameScene'またはそれに類するものと仮定します。あなたは(ドキュメントによると(https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKScene_Ref/))、シーンはルートノードなので、親がいる。たとえば、親からシーンを削除することはできません( 'self.parent'プロパティは常に現在のシーンである' nil'です)。したがって、 'self.removeFromParent()'のようなものは効果がありません。 – Whirlwind
@Whirlwind - 意味があります - ありがとう。 –