2011-12-08 12 views
1

固定距離で2つのbox2dボディを結合しようとしています。両方のボディーは自分自身を回転することはできません。また、ジョインも回転する必要があります。身体の間の隙間は、他の身体が通り抜けられるようにする必要があります。2つのbox2Dボディをしっかりと固定する

私は現在、そのようなb2revoluteJointの設定があります。関節は完全に剛性ではなく、体が相互に相対的な公正少し周りを移動する傾向があるしかし

b2RevoluteJointDef rjd; 
rjd.lowerAngle = 0.0f; 
rjd.upperAngle = 0.0f; 
rjd.Initialize(body2, body1, body2->GetPosition()); 
rjd.collideConnected = false; 
world->CreateJoint(&rjd); 

を。これを行うより良い方法はありますか?

また、私は両方の体がオーバーラップする必要があると仮定して動作しませんでしたb2WeldJointは

EDIT ...試してみました:

私が試してみましたb2WeldJointは次のとおりです。

b2WeldJointDef wj; 
wj.Initialize(body1, body2, body1->GetWorldCenter()); 
world->CreateJoint(&wj); 

しかし、私が身体を動かすと、他の身体はその位置にとどまります。

答えて

0

は、私も、私は両方の体がオーバーラップする必要があると仮定して動作しませんでしたb2WeldJointは、私の知る限りでは...

を試してみましたが、体の形状は、必ずしもする必要はありませんオーバーラップ私があなたの設定を理解している限り、溶接ジョイントは適切なものとなります。これは相対的な平行移動と回転を禁止しているからです。

+0

Constantinius、b2WeldJointの例で私の質問を更新しましたが、私はうまくいきませんでした。 – Alex

+0

あなたの溶接継手の使用は私にとって正しいようです。あなたは2つの図形を作って一つの体に加えようとしましたか? – Constantinius

関連する問題