我正在使用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
但是当我运行游戏时,没有检测到碰撞并且没有任何反应。有什么问题?
答案 0 :(得分:1)
请参阅documentation here。如果要接收联系/交叉通知,则需要设置contactTestBitMask
。与默认值为collisionBitMask
的{{1}}不同,0xFFFFFFFF
的默认值为contactTestBitMask
。