我正在制作一个SpriteKit游戏,为了开始游戏,你需要持有两个独立的点(SKShapeNodes)3秒钟。如果您放开手指或将任一指针从节点移开,游戏将无法启动。我有1个点可以正常工作,但当我尝试做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移动到此节点。
享受!