是否可以解释位掩码如何仅适用于这种简单的情况:
A big (blue) ball. Contact BitMask 0b0001
A medium (red) ball. Contact BitMask 0b0010
A small (white) ball. Contact BitMask 0b0100
他们之间没有碰撞,因为不知何故,这在他们之间被关闭了。我假设通过将它们的碰撞掩码设置为 00 一直到 32 位......但是让我们把它留给另一个问题,我还没有想出如何关闭这些。
将每个球设置为具有唯一的接触位掩码后,如何在它们接触时提供联系信息?
如何知道哪两个球相互接触?
是否可以让任何给定接触中的最大球只收到联系信息?
更新:
我不一定在代码之后。如果你需要代码来解释什么是什么,它是如何工作的,以及为什么不管做什么,那就去做吧。
但我真正追求的是理解位掩码如何工作以提供允许确定“谁”参与任何联系的逻辑。
我给每个球尺寸一个不同的位掩码的原因是我认为这可能有助于确定两个球之间任何给定接触中的较大球。不过,我可能错了。
更新 2:
对进展过程的理解:
据我了解,这些是该过程的一部分:
将 SKView 子类化为 SKScene 注册为符合物理世界联系通知委托。也说是这样。
将位掩码设置为希望在模拟中了解和/或控制的每种身体交互类型的类别
使用这些位掩码,通过适当地应用它们来阐明希望成为接触和/或碰撞一部分的每个对象的性质(这里有一些神奇的决策)。
在注册为委托的同一个 SKView 子类中,使用执行操作的代码覆盖联系人回调
创建一些魔术代码来确定谁/什么联系了谁。
我了解其中一些,但不了解设置联系人位掩码与命名类别位掩码的推理之间的差异,也不了解如何确定谁联系了谁。