0

私は 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 である形状は検出されません。そして、文字列名を正しく入力しました。

4

1 に答える 1

0

SpriteKit でタッチを検出する場合、nodeAtPoint() よりも SKNode の contiansPoint() メソッドを使用する方が簡単であることがわかりました。

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

明らかに、私のコード例はまったくうまくスケーリングしませんが、一般的に、私の経験では、containsPoint() は nodeAtPoint() よりもはるかに信頼性が高くなっています。

于 2015-02-21T17:09:47.787 に答える