touchesBegan with physhicsBody

时间:2015-09-14 23:01:10

标签: swift sprite-kit touchesbegan

我正在创建一个2x2矩阵,并将节点放入其中。当我在矩阵的位置内选择一个节点时,他使用着色操作将其颜色更改为红色。

问题在于,如果节点图像太大,即使我触摸矩阵的另一个方格,他也会识别出触摸。

例如:

[0-0][0-1]
[1-0][y]

我的节点在Y方格(位置:1-1)。如果图像大于正方形的大小,即使我点击1-0的方格,他也会得到触摸。

我无法使用节点的矩阵位置进行触摸,因为图像与其重叠,因此它从不接触矩阵方块。

无论如何,我可以使用节点的PhyshicsBody而不是

来触摸
let location = touch.locationInNode(self)
let node = nodeAtPoint(location)

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题。

我知道你需要油漆元素符合触摸位置。

我做了什么,在这个例子中我使用Scene作为参考,但是你可以用其他Sprite做,好吧,我将我的屏幕切成4块,然后我得到了触摸点并验证了场景中的位置。

class test:SKScene{
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        if let touch = touches.first as? UITouch{
            let touchLocation = touch.locationInNode(self)

            if touchLocation.x < self.size.width/2 && touchLocation.y < self.size.height/2 {
                //paint red [1,0]
            }else if touchLocation.x < self.size.width/2 && touchLocation.y > self.size.height/2 {
                //paint red [0,0]
            }else if touchLocation.x > self.size.width/2 && touchLocation.y > self.size.height/2 {
                //paint red [0,1]
            }else if touchLocation.x > self.size.width/2 && touchLocation.y < self.size.height/2 {
                //paint red [1,1]
            }
        }
    }
}

希望帮助你......