2015-01-07 125 views
2

我只是想知道如何从场景中移除SKSprite节点。这是我到目前为止有:Swift + Sprite套件触摸检测

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 


    for touch: AnyObject in touches { 
     let location = (touch as UITouch).locationInNode(self) 
     if let theName = self.nodeAtPoint(location).name { 
      if theName == "monster" { 

       monster! .removeFromParent() 



      } 
     } 
    } 
} 

我创造很多在屏幕上这些怪物的,但是当我在其中一人挖掘它不会做任何事情。如果我尝试添加println("touched"),它告诉我它已被触动。

+1

您是否给每个怪物命名为“怪物”?你有没有在所有的怪物上设置userInteractionEnabled为true? – Okapi

回答

3

当你这样做monster.removeFromParent()这不会删除被触摸的节点,因为monster不是对被触摸的节点的引用。要删除被触摸的节点,您可以使用以下代码:

for touch in touches { 
    let location = (touch as UITouch).locationInNode(self) 
    if let theMonster = self.nodeAtPoint(location) 
     if theMonster.name == "monster" { 
      theMonster.removeFromParent() 
     } 
    } 
} 
+0

感谢此工作 – user3808792

0

你跟踪你的怪物吗?如果不是,请通过将这些添加到Mutable Array来跟踪这些内容。还要为每个精灵添加唯一的名称。

然后只是比较对象与你的数组并删除该对象。希望这有助于.. :)

+0

我该怎么做?我的物体永远不断下降。我将它编程为每隔0.5秒在随机位置设置屏幕上方的精灵,然后落下。谢谢 – user3808792