检测SKShapeNode上的触摸并不像精灵那样工作

时间:2015-02-21 14:20:21

标签: sprite-kit touch skshapenode

我有一个SKShapeNode并且我为它设置了一个名称,但是当我尝试在触摸时检测到它时,它与你使用其他精灵的方式不起作用。

 override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        /* Called when a touch begins */

        for touch: AnyObject in touches {
            let location = touch.locationInNode(self)



            if let body = self.nodeAtPoint(location) as? SKSpriteNode {

                if var name: String = body.name {
                    switch name {

                        case "myShape":
                             println("Shape Touched")

                        case "enemy":
                             println("Enemy Touched")

                    default:


                    }
                }
            }
        }
    }

敌人是SKSpriteNode并且它被正确检测到,但是SKShapeNode的形状没有。我正确输入了字符串名称。

1 个答案:

答案 0 :(得分:0)

使用SpriteKit检测触摸时,我发现使用SKNode的contiansPoint()方法而不是nodeAtPoint()

更容易
let myShape = self.childNodeWithName("myShape")
if myShape.containtsPoint(location) {
    println("Shape touched")
}

显然,我的代码示例根本不会很好地扩展,但总的来说,根据我的经验,containsPoint()比nodeAtPoint()更可靠。