在下面的didBegin
函数中,其中一个节点的类别位掩码为4294967295.但是,此类别永远不会分配给任何节点。
以下是所有正在使用的位掩码:
struct PhysicsCategory {
static let None : UInt32 = 0
static let All : UInt32 = UInt32.max
static let Player : UInt32 = 0b1 // 1
static let WorldBorder : UInt32 = 0b10 // 2
static let TopWorldBorder : UInt32 = 0b100 // 4
static let RightWorldBorder : UInt32 = 0b1000 // 8
static let Pellet : UInt32 = 0b10000
}
要重复,All
类别(对应于4294967295)永远不会分配给任何节点。那么为什么有一个物理体具有这种类别的掩码呢?此类别位掩码是否隐式分配给物理主体?
func didBegin(_ contact: SKPhysicsContact) {
print("Collision was detected: \(contact.bodyA.categoryBitMask). \(contact.bodyB.categoryBitMask).")
}
答案 0 :(得分:7)
categoryBitMask
是UInt32
,其最大值为 4294967295 ,这也是其默认值(设置了所有位)。引自docs:
场景中的每个物理主体最多可分配32个不同的物理主体 类别,每个类别对应于位掩码中的一个位。你定义 游戏中使用的蒙版值。与...结合 collisionBitMask和contactTestBitMask属性,你定义哪个 物理机构互相交流,当你的游戏得到通知时 这些互动。
默认值为0xFFFFFFFF(设置所有位)。