我想要一个精灵在触摸另一个精灵时将自身删除。现在,当他们触摸时,他们只是互相推动。
我有这个:
let alphaCategory: UInt32 = 0x1 << 0 let betaCategory: UInt32 = 0x1 << 1
我使精灵充满活力,不受重力影响
self.physicsworld.contactDelegate = self alpha.physicsBody?.categoryBitMask = alphaCategory alpha.physicsBody?.contactTestBitmask = betaCategory
和
beta.physicsBody?.categoryBitMask = betaCategory beta.physicsBody?.contactTestBitmask = alphaCategory
我无法迅速找到对我有意义的任何东西,但我认为问题出在这里
func didBeginContact(contact: SKPhysicsContact) { var firstBody: SKPhysicsBody var secondBody: SKPhysicsBody if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask { firstBody = contact.bodyA secondBody = contact.BodyB beta.removeFromParent() } }
首先,您应该将firstBody和secondBody设置为它们的crashBitMask的顺序:
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask { firstBody = contact.bodyA secondBody = contact.bodyB } else { firstBody = contact.bodyB secondBody = contact.bodyA } if firstBody.categoryBitMask=0 && secondBody.categoryBitMask=1 { secondBody.removeFromParent() }
这样可以防止您的精灵与任何物体(包括彼此)碰撞。在设置其他BitMask属性的位置进行设置:
alpha.physicsBody.collisionBitMask = 0 beta.physicsBody.collisionBitMask = 0