Я работаю над своей игрой, и я застреваю в удалении действия. У меня есть набор трубок, которые движутся справа налево навсегда (например, птица-птица). Я создал трубы внутри функции и действие их перемещения внутри didMoveToView
. Итак, внутри функции pipe я создаю трубы и запускаю действие. (я упростил код)Удаление действия, объявленного внутри функции
func initPipes() {
let pipePair = SKNode()
pipePair.position = CGPoint(x: self.frame.size.width + 70, y: 0)
//PIPE 1
let pipe1 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSizeMake(70, 700))
//here i set physics and position
pipePair.addChild(pipe1)
//PIPE 2
let pipe2 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSizeMake(70, 700))
//same as pipe1
pipePair.addChild(pipe2)
//SCORE
let scoreSprite = SKSpriteNode(color: SKColor.clearColor(), size: CGSize(width: 50, height: 150))
pipePair.addChild(scoreSprite)
pipePair.runAction(moveAndRemove, withKey: "move")
pipes.addChild(pipePair)
}
При обнаружении коллизии я бег gameOver
функцию. Внутри этой функции, если я пишу:
removeActionForKey("move")
трубы продолжают двигаться. Может быть, потому, что я должен написать pipePair.removeActionForKey("move")
. Но так как pipePair
является локальным, я не могу этого сделать. Как я могу это решить?
Является ли узел «pipe» (родительский узел pipePair) определенным как свойство? – Whirlwind
Извините, я забыл об этом. Я объявил это в GameScene. –