【发布时间】:2015-07-01 04:51:37
【问题描述】:
我的 SpriteKit 游戏中有一个循环,它随机生成一个对象的副本,我想使用 removeFromParent() 在接触时删除我的对象。但是,当我将其添加到代码中时,不会删除该对象。这是生成对象的循环代码:
for i = 0; i<1000; ++i {
var randomNumber = CGFloat(arc4random_uniform(3000)) * 200
bubbleDuplicate.position = (CGPointMake(randomNumber, 400))
bubbleDuplicate = bubble.copy() as! SKSpriteNode
bubbleDuplicate.physicsBody?.categoryBitMask = bubbleCategory
bubbleDuplicate.physicsBody?.collisionBitMask = 0
bubbleDuplicate.physicsBody?.contactTestBitMask = 0
addChild(bubbleDuplicate)
func BubbleContact(){
bubbleDuplicate.removeFromParent()
bubble.removeFromParent()
bubbleDuplicate.setScale(0)
bubble.setScale(0)
}
}
这是我应该删除我的对象的碰撞代码:
func didBeginContact(contact: SKPhysicsContact) {
let collision:UInt32 = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask)
if collision == (playerCategory | crateCategory) {
gameOver()
}
if collision == (playerCategory | bubbleCategory) {
NSLog("Bubble Contact")
bubbleDuplicate.removeAllActions()
bubbleDuplicate.removeFromParent()
bubble.removeAllActions()
bubble.removeFromParent()
bubbleDuplicate.setScale(0)
bubble.setScale(0)
bubbleDuplicate.alpha = 0
bubble.removeFromParent()
bubbleDuplicate.removeFromParent()
}
}
如何修复我的代码?
编辑:感谢@NikitaLeonov 的回答,我的泡泡精灵现在可以正常运行了。但是,我正在尝试将相同的功能应用于另一个精灵节点,并且简单地复制他的代码不会产生相同的效果。我该怎么办?这是新代码:
if (contact.bodyA.categoryBitMask == bubbleCategory) {
let node = contact.bodyB.node
//Other remove routine
NSLog("Bubble Contact")
node?.removeAllActions()
node?.removeFromParent()
} else if (contact.bodyB.categoryBitMask == bubbleCategory) {
let node = contact.bodyB.node
//Other remove routine
NSLog("Bubble Contact")
node?.removeAllActions()
node?.removeFromParent()
}else if (contact.bodyA.categoryBitMask == wormCategory) {
let node = contact.bodyB.node
//Other remove routine
NSLog("Worm Contact")
node?.removeAllActions()
node?.removeFromParent()
}else if (contact.bodyB.categoryBitMask == wormCategory) {
let node = contact.bodyB.node
//Other remove routine
NSLog("Worm Contact")
node?.removeAllActions()
node?.removeFromParent()
}
【问题讨论】:
标签: ios swift sprite-kit