我有一个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的形状没有。我正确输入了字符串名称。
答案 0 :(得分:0)
使用SpriteKit检测触摸时,我发现使用SKNode的contiansPoint()方法而不是nodeAtPoint()
更容易let myShape = self.childNodeWithName("myShape")
if myShape.containtsPoint(location) {
println("Shape touched")
}
显然,我的代码示例根本不会很好地扩展,但总的来说,根据我的经验,containsPoint()比nodeAtPoint()更可靠。