私はbox2dを学び理解するのに苦労しています。これが私の問題です:
私はシンプルな車を作ろうとしています。今のところ、車体は次のようになっています。
ここで、ホイールを追加しようとしています。ホイールボディを作成し、b2RevolutionJointを使用してホイールを車体にリンクすると仮定します。
その部分に到達するまでは、ホイールをその場所に配置できるようにしたいので、bodyCarBodyとの関係で。これを正しく行うにはどうすればよいですか?
私がオンラインで見たものは次のようなものです:
bodyDef2.position.Set(axle2->GetWorldCenter().x + 1.3*cos(-M_PI/3), axle2->GetWorldCenter().y + 0.3*sin(-M_PI/3));
しかし、私はその表現のcosとsinの部分を理解していません。
私がやろうとしていることはこれです:
backWheelDef.position = b2Vec2(carBody->GetWorldCenter().x - 20.0/PTM_RATIO,carBody->GetWorldCenter().y);
私のcarBody頂点の定義は次のようになっているので、次のようになります。
b2Vec2 vertices[] = {
b2Vec2(100.0/PTM_RATIO,15.0/PTM_RATIO),
b2Vec2(100.0/PTM_RATIO,30.0/PTM_RATIO),
b2Vec2(50.0/PTM_RATIO,65.0/PTM_RATIO),
b2Vec2(20.0/PTM_RATIO,65.0/PTM_RATIO),
b2Vec2(0.0/PTM_RATIO,45.0/PTM_RATIO),
b2Vec2(0.0/PTM_RATIO,15.0/PTM_RATIO)
};
ホイールを配置する上記の方法の結果は、どういうわけか正しいように見えます(下のスクリーンショットを参照)が、上記の数値を見ると、あまり意味がありません。
carBodyの幅は1000.0/PTM_RATIOなので、GetWorldCenter()。xは50.0/PTM_RATIOに等しい値を返すと思います。
つまり、ホイールの位置は30.0 / PTM_RATIOで計算した後ですよね?
下の結果を見ると、ホイールxの位置は20.0/PTM_RATIOのようです。
Box2Dで他のボディとの関係でポジショニングボディがどのように機能するかを誰かに説明してもらえますか?このようなことを明確にしたら、ジョイントを使用してそれらをリンクすることに移ります。
本当にありがとう!
iforce2dの回答に基づく後の編集:
答えてくれてありがとうiforce2dとbox2dの世界であなたが提供するすべての良い洞察に感謝します。あなたが言っていることは完全に真実ですが、これは私の質問ではありませんでした。
GetWorldCenterが重心を返し、GetPositionがオブジェクトの位置の原点を返すことがわかったら、carBodyとの関係で必要な場所にホイールを正確に配置するのは簡単でした。体の下に現れる動作はまだありますが、方程式に関節を追加すると、これは修正されることがわかりました。
今、私はこのポジショニングの問題に何らかの形で関連している別の質問があります。下の画像を見てください:
アンカーポイントを以下のように設定すると、これは私の関節がどのように見えるべきか正しいですか?それらがanchorPointAからanchorPointBに移動するのではなく、原点から移動することに少し混乱しています
再度、感謝します!