如何创建一个精灵,然后用Swift通过触摸删除SpriteKit中的特定精灵?

问题描述:

我想创建一组精灵,并在碰触它们时一次删除它们。到目前为止发生的事情是,当我添加代码时,最后一个精灵被移除,而不是我接触的精灵。如何创建一个精灵,然后用Swift通过触摸删除SpriteKit中的特定精灵?

var sprite = SKSpriteNode?() 
var touchLocation : CGPoint? 


for touch in touches { 

     let location = touch.locationInNode(self)     
     touchLocation = location 
     addASprite()   
    } 
    removeSprite() 

} 

func addASprite(){ 
     sprite = SKSpriteNode(color: UIColor.orangeColor(), size: CGSize(width: 100, height: 100)) 

     sprite!.position = touchLocation! 
     self.addChild(sprite!) 

} 

func removeSprite(){ 


     if ((sprite?.containsPoint(touchLocation!) != nil)){ 

      sprite?.removeFromParent() 

     } 

} 
+0

我想,for循环内的touchesBegan所定义,并且“子画面”的变量被定义为一个属性(其不是一些方法内本地定义的)?如果是这种情况,发生的事情就是你一遍又一遍地创建精灵,但是“精灵”变量最终只能通过只引用最后创建的节点来引用。 – Whirlwind

+0

我不得不删除一些垃圾,但确实被删除了。 – ParalaxWobat

要删除触摸节点:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    for touch in touches { 
     let location = touch.locationInNode(self) 
     let touchedNode = nodeAtPoint(location) 
     touchedNode.removeFromParent() 
    }