user3960314
user3960314

Reputation:

(SpriteKit + Swift 2) - Remove sprite when user tapped on it

I am trying to make a simple bubble tapped game. I have a created a SKSpriteKid node in my code. The problem is I want to sprite to disappear when user tap on it. I can't seem to removeparent() the node. How do I tackle this?

I have created a sprite with bubble1 as the name.

func bubblePressed(bubble1: SKSpriteNode) {
      print("Tapped")
      bubble1.removeFromParent()
}


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

    for touch: AnyObject in touches {

        let touchLocation = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(touchLocation)

           if (touchedNode.name == "bubble1") {
              touchedNode.removeFromParent()
              print("hit")                
           }        
    }           
}



//the node's creation.
func bubblesinView() {

    //create the sprite
    let bubble1 = SKSpriteNode(imageNamed: "bubble_green.png")

    //spawn in the X axis min is size, max is the total height minus size bubble
    let width_bubble_1 = random(min: bubble1.size.width/2, max: size.width - bubble1.size.height/2)

    //y: size.height * X, X is 0 at bottom page to max
    //spawn position, let x be random
    bubble1.position = CGPoint(x: width_bubble_1, y: size.height)

    // Add the monster to the scene
    addChild(bubble1)

    // Determine speed of the monster from start to end
    let bubblespeed = random(min: CGFloat(1.1), max: CGFloat(4.0))

    //this tell the bubble to move to the given position, changeble x must be a random value
    let moveAction = SKAction.moveTo(CGPoint(x: width_bubble_1, y: size.height * 0.1), duration: NSTimeInterval(bubblespeed))
    let actionMoveDone = SKAction.removeFromParent()
    bubble1.runAction(SKAction.sequence([moveAction, actionMoveDone]))
}

I am really trying to make this work. Thanks in advance!

Upvotes: 0

Views: 650

Answers (2)

cekisakurek
cekisakurek

Reputation: 2474

If you want to use the name property of the node, you should set it to something. The runtime cannot figure out the variable name as the name. So in bubblesInView function after

let bubble1 = SKSpriteNode(imageNamed: "bubble_green.png")

you should do

bubble1.name = "bubble1"

Upvotes: 1

giorashc
giorashc

Reputation: 13713

You just forgot to name the node :

 //create the sprite
 let bubble1 = SKSpriteNode(imageNamed: "bubble_green.png")
 bubble1.name = "bubble1"

Upvotes: 0

Related Questions