检测不同SpriteKit节点上的单独触摸?

时间:2015-03-15 04:27:18

标签: ios sprite-kit

我正在制作一个SpriteKit游戏,为了开始游戏,你需要持有两个独立的点(SKShapeNodes)3秒钟。如果您放开手指或将任一指针从节点移开,游戏将无法启动。我有1个点可以正常工作,但当我尝试做2个点时,我被卡住了。检测正确节点上2次正确触摸的最简单方法是什么?

这似乎并不是一种非常罕见的情况,所以如果有人知道处理这种情况的最佳方式,我将非常感谢你的帮助。

斯威夫特也是首选。

2 个答案:

答案 0 :(得分:0)

将multipleTouchEnabled设置为YES并使用touchesForView:方法。

您可以从Apple Docs Multitouch Events获取有关多点触控的更多具体信息。

答案 1 :(得分:0)

主要想法是在用户提供任何操作并同时操作时进行所有操作。

因此,在Scene类中添加3个处理程序:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    checkTouches((event?.allTouches())!)
}

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
    checkTouches((event?.allTouches())!)
}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
    checkTouches((event?.allTouches())!)
}

在checkTouches功能中,您将看到所有具有更新属性的触摸(如位置等)。

简单示例:

func checkTouches(touches: Set<UITouch>) {
    // iterate over all touches
    for t in touches {
        let touch = t as UITouch
        let touchLocation = touch.locationInNode(self)
        if... <-- YOUR CODE HERE TO CHECK NODE NAME AND TOUCHED TIME
    }
}

使用这种方法,您将能够同时处理任何更改。 例如。用户可以触摸您的节点,然后将手指移到其外部,然后将bach移动到此节点。

享受!