【发布时间】:2016-10-08 06:43:54
【问题描述】:
是否有可能解释位掩码如何在这种简单的情况下工作:
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 子类中,用代码覆盖联系人回调
创建一些魔术代码来确定谁/什么联系了谁。
我了解其中的一些,但不了解设置联系人位掩码与命名类别位掩码的推理的区别,也不了解如何确定谁联系了谁。
【问题讨论】:
标签: sprite-kit physics bit-masks skphysicscontact