边界碰撞检测



我正在用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。与默认值为0xFFFFFFFFcollisionBitMask不同,contactTestBitMask的默认值是0x00000000

最新更新