user6257500
user6257500

Reputation: 1

swift syntax deleting an image with UITouch

This is basically the code I am trying to spawn images or enemies with and I want to delete them but not all at once by touch only one of the same images that was touched. The image is moving too in case any one needs to know.

import SpriteKit
import UIKit 

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
         let myLabel = SKLabelNode(fontNamed:"chalkduster ")
         myLabel.text = "HELLO WORLD"
         myLabel.fontsize = 45
         myLabel.position = CGPoint(x:CGRectGetMidx(self.frame), y:CGRectGetMidy(self.frame)) 
       self.addChild(myLabel) 
    }
    func SpawnEnemies(){
         let Enemy = SKSpriteNode(imageNamed: "Enemy.png")
         let MinValue = self.size.width /8 
         let MaxValue = self.size.width -158
         let spawnPoint = UInt32(MaxValue- MinValue)
         Enemy.runAction(SKAction.sequence([action, actionDone])) 
         self.addChild(Enemy)
    }
    func touchesEnded(touches: NSSet, withEvent event: UIEvent?) {
        for touch in touches { 
           _ = touch.locationInNode(self)
           let touch = touches.anyobject() as! UITouch? 
           if let location = touch?.locationInNode(self)
           { 
              for _ in self.nodeAtPoint(location) 
              {
                  if let Enemy.name == (name., "SpawnEnemies" {
                          Enemy.removeFromParent()
                  }
              }
           }
        } 
    }
    func update(currentTime: CFTimeInterval) {
    }

Upvotes: 0

Views: 42

Answers (1)

Alessandro Ornano
Alessandro Ornano

Reputation: 35402

Usually using uppercase to the properties name it's considered as a bad attitude, you should use enemy instead of Enemy

Try this approach:

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

        /* Called when a touch begins */

        let touch = touches.first
        let positionInScene = touch!.locationInNode(self)

        let touchedNode = self.nodeAtPoint(positionInScene)

        if let name = touchedNode.name
        {
            if name == "SpawnEnemies1" { // try to get a different name for each of your enemy
                Enemy.removeFromParent()
            } else
            if name == "SpawnEnemies666" { // this is the big boss
                // do some awesome animation..
                Enemy.removeFromParent()
            } else
            if name == "title"
            {
                print("title touched")
                // do whatever you want with title, removing or using it
            } else
            if name == "credits"
            {
                print("credits touched")
            } else
            ...
        }
}

Upvotes: 0

Related Questions