2012-01-12 17 views
0

私はBox2DFlashの直接ポートであるBox2DWeb 2.1aを使用しています。同時衝突によるBox2D衝突フィルタリング

カテゴリとマスクビットを設定してコンタクトフィルタ(b2FilterData)を使用しています。これは部分的には機能しますが、私が期待していない刺激的な行動があります。衝突してはならないアイテムが他のオブジェクトと接触していると、衝突する必要があるオブジェクトも互いに衝突します。私はこれを望んでいないが、それを取り除く方法を見つけることができません。

b2ContactFilter.prototype.ShouldCollideメソッドの正確なコピーであるShouldCollideメソッドを使用して、b2ContactFilterを作成し、接触時にカテゴリとマスクビットの値を出力しました。誤った衝突が発生すると、filter1.categoryBitsとfilter1.maskBitsがそれぞれ0x0001と0x65535になることに気付きました。これは、b2FilterDataが新しいインスタンスであるか、またはb2Bodyに新しいb2FixtureDefインスタンスが割り当てられているかのようです。しかし、なぜこれが起こったのか分かりません。

+0

コード全体を共有できますか? – Shekhar

答えて

0

b2FilterDataを正しく割り当ててもよろしいですか? b2FixtureDefではなくb2Fixtureに適用する必要があります。あなたがやっている場合:

var myData = new b2FilterData(); 
myData.maskBits = ~0x0004; 

fixture.m_filter = myData; 

ではなく、試してみてください。

fixture.SetFilterData(myData); 

あなたがSetFilterDataを呼び出してエラーが出た場合、それはあなたが間違っている、代わりにb2Fixtureではなくb2FixtureDefでそれを呼び出していないことを意味します。

それはまったく役に立ちましたか?

+0

どのようにオブジェクトを異なるレイヤーに配置すると、オブジェクト同士が衝突するのではなく、地面に衝突するのですか? –

+0

@WorstForumそれは新しい質問です。あなたがそれに尋ねるなら、私はあなたのために答えることができる。 –

+0

私はそれをうまくやった - Box2D Webのための完全なドキュメントがないにもかかわらず。 しかし、私は2つの図形の50%のモーフを見つける方法を理解しようとしているので、正確な平均 - 角度/頂点を使って私の髪を引っ張っています。 –