SpriteKit SWIFT中的位掩码问题

时间:2017-05-28 17:25:16

标签: sprite-kit collision bit-masks

在我的游戏中,我有不同颜色的圆圈。它们只应与不属于其颜色的边界碰撞。 为此,我首先为普通圆圈指定一个类别位掩码。

    struct CollisionCategoryBitmask {
    static let monster: UInt32 = 00000001
    static let picker: UInt32 = 00000010
    static let bound: UInt32 = 00000100
    static let circle: UInt32 = 00001000
    static let yellow: UInt32 = 00010000
    static let brown: UInt32 = 00100000
    static let cyan: UInt32 = 01000000
    static let magenta: UInt32 = 10000000
}

physicsBody?.categoryBitMask  = CollisionCategoryBitmask.circle

边界具有以下掩码:

boundary.physicsBody?.categoryBitMask = CollisionCategoryBitmask.bound
boundary.physicsBody?.collisionBitMask = 11101111

在圆圈与拾取器发生碰撞后,它会得到一个掩码,使其停止与边界碰撞,但不会。“/ p>

self.circles[i].fillColor = .yellow
                    self.circles[i].physicsBody?.categoryBitMask = 00010000
                    self.circles[i].physicsBody?.collisionBitMask = 11111011

当圆圈与拾取器碰撞时执行此代码。 结构中的值如青色和品红色各自用于圆的状态,在该状态下它不会与该颜色的边界碰撞。我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

只需添加" 0b"在每个文字的开头。你现在不使用二进制表示法。

详细了解位掩码的工作原理。