SpriteKit记住触摸了哪个精灵

时间:2015-06-19 11:37:30

标签: swift sprite-kit touch swift2

我有一个游戏'有3个精灵。 如果用户点击“Sprite1'”,之后点击“Sprite2'”。 有没有办法记住哪些精灵被按下了? 它只有2个精灵,如果有更多,我将需要清空记忆'并且从最后一个触摸过来开始,我不想和布尔人一起工作。

我所有的精灵都有.name属性,所以我可以在那里访问它们。

IF声明是否足够

var spriteArr:[String] = []
let location = (touch as UITouch).locationInNode(self)
for touch in touches{
   if spriteArr.count < 2 {
        spriteArr.append(self.nodeAtPoint(location))
   }else{
      spriteArr.removeAll
      spriteArr.append(self.nodeAtPoint(location))
   }
}

1 个答案:

答案 0 :(得分:3)

您可以通过访问Node的.name并将名称存储在这样的数组中来检查Sprite。

 var nodeNames:[String] = []
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {         
        let touch = touches.first as! UITouch
        var touchedNode:SKNode = nodeAtPoint(touch.locationInNode(self))

        if(nodeNames.count > 2){
             nodeNames = []
        }
        if(touchedNode.name != nil){
            if(!contains(nodeNames, touchedNode.name)){
                 nodeNames.append(touchedNode.name)
            }
        }
    }