物体が他の物体と衝突するかどうかを検出する方法。ただし、この衝突には反応しません。
デフォルトでは、i-衝突を検出し、物体が衝突します。
フィクスチャデフフィルタを設定した場合-ボディは衝突しませんが、衝突を検出できません。
助けてください!
フィクスチャが何かと衝突する必要がない場合は、センサーにすることができます。あるものと衝突する必要があるが他のものと衝突する必要がない場合は、衝突したものに応じて、衝突リスナーのPreSolveでcontact-> SetEnabled(false)を実行できます。
ここで必要なのは、ボディのセンサーフィクスチャです。box2dマニュアルから:
ゲームロジックは、2つのフィクスチャがオーバーラップするタイミングを知る必要がある場合がありますが、衝突応答はありません。これは、センサーを使用して行われます。センサーは、衝突を検出しますが、応答を生成しないフィクスチャです。
任意のフィクスチャにセンサーとしてフラグを立てることができます。センサーは静的または動的の場合があります。ボディごとに複数のフィクスチャがあり、センサーとソリッドフィクスチャを任意に組み合わせることができることを忘れないでください。
センサーは接点を生成しません。センサーの状態を取得するには、次の2つの方法があります。
- b2Contact :: IsTouching
- b2ContactListener::BeginContactおよびEndContact
フィクスチャをセンサーとして設定し、それをコンタクトリスナーに書き込むことができます。フィクスチャのセンサーフラグがtrueに設定されている場合、衝突を物理的にシミュレートすることなく衝突データを提供します(つまり、他の衝突するフィクスチャ間のオーバーラップをテストできます)。
これは、センサーの使用を開始する方法に関する役立つチュートリアルです。RayWenderlichセンサーチュートリアル