我需要将一个SCNNode的
collisionBitMask
设置为默认值,这都是位设置的。
事实证明这非常棘手,以下是我迄今为止的研究:
collisionBitMask
是 Int
类型(不是 UInt
)!
默认值为all(每一位都启用的位掩码),指定物体将与所有其他类别的物体发生碰撞。
然后点击链接,我们有:
静态变量全部:SCNPhysicsCollisionCategory { get }
从
SCNPhysicsCollisionCategory
的doc,我们知道rawValue是一个UInt
。
我无法直接将
UInt
转换为 Int
因为我会失去精度:
toyUI.physicsBody?.collisionBitMask = Int(SCNPhysicsCollisionCategory.all.rawValue)
我收到此错误:
Swift/Integers.swift:3687:致命错误:没有足够的位来表示传递的值
尝试像这样设置:
toyUI.physicsBody?.collisionBitMask = Int.max
SCNPhysicsCollisionCategory.all.rawValue
(如 UInt
)启用所有 64 位。
Int.max
还将除符号位之外的所有位都设置为1,这足以表示“所有类别”。