2011-07-07 10 views
0

私は初めてiPhoneでBOX2Dを使用しています。全体的にはかなり良いですが、静的ボディと動的ボディの両方を特徴とするシーンを作成するたびに、私はContactManagerのラインで繰り返しアサーションを取得しています。正確な行は次のとおりです。Box2Dアサーションを引き起こす静的/動的ボディ間のコレーション

b2Assert(bodyA->m_type == b2_dynamicBody || bodyB->m_type == b2_dynamicBody); 

b2ContactManager :: Collide()は無効です。これは、2つのオブジェクトが衝突するときにそれがアサーションされていることを示唆しているようですが、その1つは動的ではありません。もちろん、ダイナミックボディは静的ボディと衝突するはずです!

私は静的なオブジェクトを妙に作成するまで、この行にアサートしません。私はスクリーンの上に動くたくさんのダイナミックボックスを持っています。 1つの静的なものを導入するとすぐに、私はここでクラッシュします。

誰でもお手伝いできますか?これは、これらの「本当に明白な」タイプの問題のようです。

+1

これは、静的なボディが既存のダイナミックボディの上に作成された場合に発生しますが、なぜそれがアサートになる必要があるのか​​わかりません。これはBox2Dのバージョンを知っていますか?現在のバージョンではこれはアサーションではなく、どちらのボディも動的でない場合は何もしません。 – iforce2d

答えて

0

スタティックボディを作成した後に移動しますか? (静的なボディの移動に問題があったが、アサートではなく、奇妙な衝突の挙動を引き起こした)、静的ボディとキネマティックボディ(それぞれb2_staticBodyとb2_kinematicBody)を区別していることがわかった

キネマティックボディーは無限大で、力に反応しませんが(静的なものと同じですが)、手動で動かすことができると述べられています(静的ボディも手動で動かすことができますが、奇妙な行動を引き起こす可能性があります)

おそらくあなたの問題ではありません(静的なボディが作成された直後のことを暗記しているので)。すでに見たマニュアルに記載されています。これは私が以前に箱の年齢を使用し始めたため(突然運動学の概念が出現するため)、ニュースとしてしか来なかった

0

2つの非動的ボディが衝突しているという問題があります。キネマティックと静的なボディが互いに衝突してはならないので、間違っています。そのような衝突はbox2dによって無視されます。しかし、それはあなたの状況で起こっている。なぜ起きているのか、より詳細な答えを得るために、いくつかの初期化コードを提供してください。

関連する問題