Я использовал команду enumerateChildNodesWithName
, чтобы придать физику всем своим блокам, например:
func findBlock(theName:String){
self.enumerateChildNodesWithName("//*"){
node, stop in
if node.name == theName{
node.physicsBody?.categoryBitMask = physicsCategory.block
node.physicsBody?.collisionBitMask = physicsCategory.laser
node.physicsBody?.contactTestBitMask = physicsCategory.laser
}
}
}
И теперь я хочу, чтобы только один из блоков исчезал при попадании лазера. Однако мне не удалось добиться этого без одновременного исчезновения всех остальных блоков.
Я попытался использовать эту строку кода в didBeginContact
, чтобы найти блок, представляющий первое тело, и удалить его:
if firstBody.categoryBitMask == physicsCategory.block && secondBody.categoryBitMask == physicsCategory.laser{
let block = SKSpriteNode()
block.physicsBody = firstBody
block.alpha = 1
let byeBlock = SKAction.fadeOutWithDuration(0.5)
let gone = SKAction.removeFromParent()
let run = SKAction.sequence([byeBlock, gone])
block.runAction(run)
self.removeChildrenInArray([laser])
}
но это тоже не сработало. Пожалуйста помоги! Заранее спасибо!
didBeginContact
... - person Whirlwind   schedule 24.04.2016didBeginContact
. Сначала я попытался использовать ту же командуenumerateChildNodesWithName
для удаления блока, но, очевидно, это удалило все блоки на экране. Совсем недавно я попробовал эту строку кода: - person Jason Gaffney   schedule 24.04.2016didBeginContact
неправильно (если вы не хотите удалять все блоки). Правильным способом было бы проверить, какое тело представляет собой блок, и удалить его. Здесь на SO действительно много сообщений, в которых описывается, как обращаться сdidBeginContact
. Просто воспользуйтесь поиском и дайте мне знать, если у вас возникнут дальнейшие проблемы. Кроме того, пожалуйста, не вставляйте много кода в комментарии. Вы должны обновить свой вопрос с дальнейшими изменениями. Код в комментариях не читается. - person Whirlwind   schedule 24.04.2016didBeginContact
: stackoverflow.com/a/26723392/3402095, стекпоток. com/a/26443216/3402095 (‹- это будет самым простым решением для вас). - person Whirlwind   schedule 24.04.2016