我正在用Sprite Kit制作一个游戏,我有这样的碰撞检测设置:
ball.physicsBody?.categoryBitMask = ballCategory
borderBody.physicsBody?.categoryBitMask = borderCategory
和处理程序-didBeginContact()
:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody = SKPhysicsBody()
var secondBody = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
}else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.categoryBitMask == ballCategory && secondBody.categoryBitMask == borderCategory {
print("You Lose!")
}
}
我还有这行设置联系人代表:
self.physicsWorld.contactDelegate = self
但当我运行游戏时,碰撞没有被检测到,什么也没发生。怎么了?
请参阅此处的文档。如果要接收联系人/交叉点通知,则需要设置contactTestBitMask
。与默认值为0xFFFFFFFF
的collisionBitMask
不同,contactTestBitMask
的默认值是0x00000000
。