固定距離で離れている 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 も試しましたが、両方のボディが重なっている必要があると想定しているため、機能しませんでした...
編集:
私が試したb2WeldJointは次のとおりです。
b2WeldJointDef wj;
wj.Initialize(body1, body2, body1->GetWorldCenter());
world->CreateJoint(&wj);
しかし、一方の体を動かすと、もう一方の体はその位置にとどまります。