ボックス2D原点設定


8

box2dシェイプの原点を設定しようとしています。デフォルトでは、シェイプは中心を中心に回転します。ただし、図形の左側を中心に回転させるようにしています。たとえば時計のように。

SetXFormなどのことを聞いたことがありますが、その関数は存在していないようです。あなたがそれを知る必要がある場合に備えて、私はC ++を使用しています。

よろしくお願いします。どんな助けでもありがたいです。

2d  physics  box2d 

回答:


6

Box2Dで形状を作成するには、2種類の形状と3つの方法があります。

b2CircleShapeの中心は常に円の中心です。「偏った円」を作成したい場合は、その円を別のオブジェクト(その中にある小さな円など)にジョイントで固定する必要があります。

b2PolygonShapeはSetAsBoxで初期化できます。SetAsBoxはデフォルトで長方形の中央に原点を配置しますが、3番目の引数としてb2Vec2を渡して、原点を別の場所に配置できます。

非ボックスb2PolygonShapeは、ローカル座標0,0の原点で初期化されます。1方向のみ(たとえば、上と上)に拡張する形状を作成するには、(0、0)、(0、5)、(5、5)、(5、0)のような座標を指定し、ローカル座標に沿ってのみ形状を構築します上下に(そしてCCW巻き順で)移動します。

形状の原点は常にローカル座標(0、0)であることに注意してください。「原点を移動する」と考えようとすると、混乱するだけです。つまり、原点を基準にして他の頂点をオフセットしています。


2

気にしないで、私は答えをあざける。どうやらb2PolygonShapeで、あなたが関数を呼び出すとき

SetAsBox()

2つのオーバーロードがあります。そしてそのうちの1つは次のとおりです。

SetAsBox(半幅、半高、中心、角度);

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.