シーンが期待どおりに動作しない理由を理解するために、数え切れないほどの参照を確認しました。
これが私の非常に単純な SKScene (2 つの子ノード) です。
- シーンには SpriteNode (シーン全体を背景イメージとしてカバー) があります。これは zPosition = 0 です。
- シーンには、別の子 (最大 2 レベル) を持つ 2 番目のノード (SKNode) があります。これには zPosiiton - 2 があります。
- すべてのノードには .userInteractionEnabled = false があります
問題:
どこかをクリックすると、最初の子 (SpriteNode) がタッチされていることがわかります。2 番目の子 (SKNode) はタッチ検出されません。
ノードの z オーダーが期待どおりにレンダリングされていることに注意してください。機能していないように見えるのはタッチ検出です。
私の touchesBegan メソッドのスニペット:
for touch in touches {
let touchLocation = touch.locationInNode(self)
let sceneTouchPoint = self.convertPointToView(touchLocation)
let touchedNode = self.nodeAtPoint(sceneTouchPoint)
if (touchedNode.name != nil) {
print("Touched = \(touchedNode.name! as String)")
}
}