0

我有一个 SKShapeNode 并为它设置了一个名称,但是当我尝试在 touch 开始检测它时,它的工作方式与您与其他 sprite 一起使用的方式不同。

 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 没有。我正确输入了字符串名称。

4

1 回答 1

0

在使用 SpriteKit 检测触摸时,我发现使用 SKNode 的 contiansPoint() 方法比使用 nodeAtPoint() 更容易

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

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

于 2015-02-21T17:09:47.787 回答