この単純な状況でビットマスキングがどのように機能するかを説明することは可能ですか?
A big (blue) ball. Contact BitMask 0b0001
A medium (red) ball. Contact BitMask 0b0010
A small (white) ball. Contact BitMask 0b0100
どういうわけか、これはそれらの間でオフになっているため、それらの間に衝突はありません。衝突マスクを 32 ビット全体で 00 に設定していると思いますが、それは別の質問にしましょう。これらをオフにする方法はまだわかりません。
各ボールに固有のコンタクト ビット マスクを設定したら、ボールがコンタクトしたときにコンタクト情報を提供するにはどうすればよいでしょうか?
どの 2 つのボールが互いに接触したかを知るにはどうすればよいでしょうか?
特定のコンタクトで最大のボールだけがコンタクト情報を受信することは可能ですか?
アップデート:
私は必ずしもコードを求めているわけではありません。何が何で、どのように機能し、なぜ何が何をするのかを説明するコードが必要な場合は、コードを使用してください。
しかし、私が本当に求めているのは、ビットマスキングがどのように機能して、接触に「誰」が関与したかを判断できるロジックを提供する方法を理解することです。
ボールのサイズごとに異なるビットマスクを指定した理由は、2 つのボール間の特定の接触において、より大きなボールを決定するのに役立つと考えたからです。しかし、私はこれについて間違っている可能性があります。
更新 2:
進行中のプロセスの理解:
私が理解しているように、これらはプロセスの一部です。
SKView をサブクラス化した SKScene を、物理ワールドの連絡先通知デリゲートに準拠するものとして登録します。それもそうだと言う。
シミュレーションで知りたい、および/または制御したい身体的相互作用タイプの欲求の各タイプのカテゴリとしてビットマスクを設定します
これらのビットマスクを使用して、それらを適切に適用することにより、接触や衝突の一部にすることが望まれる各オブジェクトの性質を明確にします (ここでは魔法のような意思決定が行われます)。
デリゲートとして登録された同じ SKView サブクラスで、何かを行うコードで連絡先コールバックをオーバーライドします
誰/何が誰に連絡したかを判断する魔法のコードを作成します。
私はこれらのいくつかを理解していますが、連絡先ビットマスクの設定とカテゴリビットマスクの命名の理由の違いは理解していません。また、誰が誰に連絡したかを判断する方法も理解していません。