touch.locationInView无法正常工作

时间:2015-06-15 17:22:23

标签: ios swift skspritenode

我试图让它成为我的游戏在我触摸场景中的节点时识别,除非我使用下面的代码,我认为这样做我想要的,我的应用程序无法正确识别节点的位置

我点击屏幕的其余部分打印出我正在触摸的节点的名称,结果发现我的应用认为节点位于与实际位置不同的位置(x值是正确的y值价值很高)

你看到有什么不对吗?

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch in (touches as! Set<UITouch>) {
        var TouchlocationEnd = touch.locationInView(self.view!)
        let touchedNode = self.nodeAtPoint(TouchlocationEnd)

        var name = touchedNode.name

        println(name)

        if name == "start"{
            var scene = PlayScene(size: self.view!.bounds.size)
            scene.scaleMode = .AspectFill
            self.view!.presentScene(scene)
        }
    }
}

1 个答案:

答案 0 :(得分:2)

根据Apple的文档,nodeAtPoint()函数采用节点坐标系中的一个点&#34;。但你发现的观点是视图中的位置,它不一定与你在这里继承的任何节点在同一个坐标系中。

换句话说,我猜测&#34; self.view&#34;的坐标系统。不同于&#34; self&#34;的坐标系。尝试这样的事情(未经测试):

let touchPoint = touch.locationInNode( self )
let touchedNode = self.nodeAtPoint( touchPoint )