我查阅了无数参考资料,试图理解为什么我的场景没有按我预期的方式运行,例如this
这是我非常简单的SKScene(2个子节点):
场景有一个SpriteNode(作为背景图像覆盖整个场景)。它的zPosition=0。
场景有一个第二个节点(SKNode),它本身有另一个子节点(最多2个级别)。这有一个zPosiiton-2。
所有节点都具有.userInteractionEnabled=false
问题:
当我点击任何地方,我看到的都是第一个孩子(精灵)被触摸。从未检测到第二个子节点(SKNode)。
请注意,节点的z顺序正按我预期的方式呈现。触摸检测似乎不起作用。
我的touchesStarted方法片段:

       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)")
            }
        }

最佳答案

我有一个类似的问题(z:999中的背景+z:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch:UITouch = touches.first!
    let positionInScene = touch.location(in: self)
    let touchedNodes = self.nodes(at: positionInScene)
    for touch in touchedNodes {
        let touchName = touch.name
        if (touchName != nil && touchName!.hasPrefix("pato_")) {
            touch.removeFromParent()
        }
    }
}

关于swift - SpriteKit-为什么未检测到SKNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39494739/

10-09 18:52