0
我用enumerateChildNodesWithName
命令给我所有的块物理学的,就像这样:如何让一个孩子在使用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'中处理这个... – Whirlwind
@Whirlwind它在'didBeginContact'中。起初,我尝试使用相同的'enumerateChildNodesWithName'命令删除该块,但很明显,它删除了屏幕上的每个块。最近,我试图这行代码: –
如果firstBody.categoryBitMask == physicsCategory.block && secondBody.categoryBitMask == physicsCategory.laser { 设块= SKSpriteNode() block.physicsBody = firstBody block.alpha = 1 让byeBlock = SKAction.fadeOutWithDuration(0.5) 设消失= SKAction.removeFromParent() 设运行= SKAction.sequence([byeBlock,消失]) block.runAction(运行) self.removeChildrenInArray([激光]) } –