Cra*_*lot 6 sprite-kit skphysicsbody skspritenode swift
在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
}
Run Code Online (Sandbox Code Playgroud)
要重复,All对应于4294967295 的类别永远不会分配给任何节点.那么为什么有一个物理体具有这种类别的掩码呢?此类别位掩码是否隐式分配给物理主体?
func didBegin(_ contact: SKPhysicsContact) {
print("Collision was detected: \(contact.bodyA.categoryBitMask). \(contact.bodyB.categoryBitMask).")
}
Run Code Online (Sandbox Code Playgroud)
categoryBitMask是a UInt32,它的最大值是4294967295,这也是它的默认值(所有位都设置).从文档引用:
场景中的每个物理主体最多可以分配32个不同的类别,每个类别对应于位掩码中的一个位.您可以定义游戏中使用的蒙版值.结合collisionBitMask和contactTestBitMask属性,您可以定义哪些物理实体彼此交互以及何时向您的游戏通知这些交互.
默认值为0xFFFFFFFF(设置所有位).