在我的游戏中,我有不同颜色的圆圈。它们只应与不属于其颜色的边界碰撞。 为此,我首先为普通圆圈指定一个类别位掩码。
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
当圆圈与拾取器碰撞时执行此代码。 结构中的值如青色和品红色各自用于圆的状态,在该状态下它不会与该颜色的边界碰撞。我的错误在哪里?
答案 0 :(得分:1)
只需添加" 0b"在每个文字的开头。你现在不使用二进制表示法。
详细了解位掩码的工作原理。