私はbox2dが初めてです。box2d で新しいゲームを開始し、世界で 5 つのダイナミック ボディを作成しました。最初に、それらの間の衝突を防ぐ必要があります。そのため、すべてのボディのグループ インデックスを負に設定します。体に触れた後、その体との衝突を許可したい。グループ インデックスをリセットする方法。助けてください..
質問する
720 次
2 に答える
2
次のようなものを探しているようです
b2Body *body = world->GetBodyList();
b2Filter filter = body->GetFilterData();
filter.maskBits = filter.maskBits | THE_RELEVANT_CATEGORY_BITS;
body->SetFilterData(&filter);
ここでの考え方は、任意のオブジェクトのコリジョン フィルタリング データを取得し、ブール ロジックを使用してコリジョン データを maskBits フィールドに割り当て、次に SetFilterData を使用してその新しいコリジョン データをボディに適用できるということです。THE_RELEVANT_CATEGORY_BITS は、各衝突フィルタリング カテゴリが一意の 2 進整数で表される列挙型の要素である必要があります。
このhttp://www.iforce2d.net/b2dtut/collision-filteringの詳細については、box2D チュートリアルをご覧ください。
于 2012-07-01T15:20:34.243 に答える
1
ボディのフィクスチャが複数ある場合は、このコードのチャンクを使用できます
for (b2Fixture* fix = body->GetFixtureList(); fix; fix = fix->GetNext())
{
b2Filter filter= fix->GetFilterData();
filter.groupIndex = 0;
filter.categoryBits = 0x0004;
filter.maskBits = 0x0002;
fix->SetFilterData(filter);
}
于 2013-04-02T07:49:53.320 に答える