2015-01-07 2 views
2

Мне просто интересно, как удалить узел SKSprite со сцены. Это то, что я до сих пор:Swift + Sprite Kit Touch Detection

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

Смежные вопросы