这不是冲突处理的工作原理。当两个物体相交时,物理引擎
AND在当前物体
collisionBitMask与他人的物体
之间执行逻辑运算符
categoryBitMask:
当两个物理物体相互接触时,可能会发生碰撞。通过执行逻辑“与”运算,将该人体的防撞蒙版与其他人体的类别蒙版进行比较。如果结果为非零值,则此主体受碰撞影响。每个机构独立选择是否要受到另一个机构的影响。例如,您可以使用它来避免碰撞计算,该碰撞计算对物体速度的变化可以忽略不计。
该源。
因此,结果取决于您
categoryBitMask在这两个物体上的设置方式。的默认值
categoryBitMask是
0xFFFFFFFF,表示设置了所有位。因此,当您在
0xFFFFFFFF和
0b10或之间执行&时
0b01,结果将为非零值,即碰撞。
因此,例如,将您的身体设置如下:
spriteA.physicsBody?.categoryBitMask = 0b01spriteA.physicsBody?.collisionBitMask = 0b01
和
spriteB.physicsBody?.categoryBitMask = 0b10spriteB.physicsBody?.collisionBitMask = 0b10
会给您想要的结果。另外,这可能不是您需要的确切设置,这只是一个简单的示例,您将必须根据需要更改值。在这种情况下,spriteA仅会与
categoryBitMask设置为的物体碰撞
0b01。spriteB同样如此,它将与
categoryBitMask设置为的物体碰撞
0b10。
另外,如果您不希望这些精灵与任何东西碰撞,只需将其
collisionBitMask属性设置为0。



