2016-05-23 50 views
1

SKSpriteNodesをタップすると削除しようとしていますが、削除したいノードを取得できません。最新のものだけを削除します。ノードは1秒ごとに生成されるため、1つをタップすると次のノードが削除されます。私は2つの完全に異なるプロジェクトで同じ問題があったし、解決策を見つけ出すことができていないタッチ時にSKSpriteNodeを削除する

class GameScene: SKScene { 

var weapon = SKSpriteNode() 
var badGuy = SKSpriteNode() 

override func didMoveToView(view: SKView) { 
    /* Setup your scene here */ 

    spawnBadGuy() 
    let spawn = SKAction.runBlock(spawnBadGuy) 
    let wait = SKAction.waitForDuration(1) 

    let sequence = SKAction.sequence([spawn, wait]) 
    runAction(SKAction.repeatActionForever(sequence)) 


} 
func spawnBadGuy(){ 
    badGuy.name = "badguy" 
    badGuy = SKSpriteNode(imageNamed: "redBall") 
    badGuy.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
    badGuy.setScale(0) 
    let scaleUp = SKAction.scaleTo(0.15, duration: 2) 

    let moveToSide = SKAction.moveTo(CGPoint(x: CGFloat.random(min: 0 + 50, max: self.size.width - 50), y: CGFloat.random(min: 0 + 50, max: self.size.height - 50)), duration: 2) 
    badGuy.runAction(moveToSide) 
    badGuy.runAction(scaleUp) 


    self.addChild(badGuy) 

} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    /* Called when a touch begins */ 

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


     if touchedNode.name == "badguy"{ 

      badGuy.removeFromParent() 

     } 

:ここに私のコードです。どんな助けでも本当にありがとう!

答えて

0

同じ変数を記述しているためです。試してください:

func spawnBadGuy(){ 

    let localBadGuy = SKSpriteNode(imageNamed: "redBall") 
    localBadGuy.name = "badguy" 
    localBadGuy.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
    localBadGuy.setScale(0) 
    let scaleUp = SKAction.scaleTo(0.15, duration: 2) 

    let moveToSide = SKAction.moveTo(CGPoint(x: CGFloat.random(min: 0 + 50, max: self.size.width - 50), y: CGFloat.random(min: 0 + 50, max: self.size.height - 50)), duration: 2) 
    localBadGuy.runAction(moveToSide) 
    localBadGuy.runAction(scaleUp) 
    self.addChild(localBadGuy) 
} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    /* Called when a touch begins */ 

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


     if touchedNode.name == "badguy"{ 

      touchedNode.removeFromParent() 
     } 
} 
+0

ありがとうございました!完璧に今働いている! – Marcel

関連する問題