2017-07-03 25 views
2

私はSFMLとBox2Dで遊んでいます。SFMLでは、シェイプの位置は左上隅で定義されています。また、SFMLは、画面の左上隅である(0、0)に基づいて座標を処理し、右に伸びるx軸と下に伸びるy軸を処理します。Box2Dはどのように位置と座標を扱いますか?

私は2つの質問があります。

Box2Dには、どこかに固有の(左上隅や中央のような)起源の概念がありますか?

身体の位置を設定すると、オブジェクトのの中心がとSFMLのように左上の隅が一致することがあります。これは本当ですか?たとえば:

b2BodyDef groundBodyDef; 
groundBodyDef.position.Set(0.0f, -10.0f); 

これはボディがに中心がある意味しています(0、-10)、または、それは左上隅だということは(0、-10)にありますか?

答えて

2

Box2Dは、世界の起源からの水平および垂直メーターのように、位置と座標を扱います。言い換えると、b2Vec2(2.0f, 3.0f)の座標は、原点の右に2メートル、原点の上に3メートルの点を表します(右に正のX、上に正のYの視覚的表現を仮定します)。あなたはそれが無関係なレンダリングであると指摘すると、左と右と上下は互換性がありますが、b2Vec2(2, 3)の重力を重力b2Vec2(0, -10)とペアにして座標を視覚的に表現すると、動的ボディは視覚的に加速しますそれを止める方法。

身体の位置を設定すると、世界起源に対する相対的な位置が設定されます。シェイプに使用される座標は、関連するボディーの位置に関連しているため、ボディーに関連するシェイプ(ビルトを介して)にソートの起点を提供します。 (0.f, -10.0f)からgroundBodyDef位置を設定あなたの最後の質問への答えで

は、 groundBodyDefで作成したボディは (0.f, -10.0f)に配置され、あなたはその身体にアタッチ任意の形状は、その位置からの相対であることを意味します。それを中心として考えること自体が私にとって間違っているとは思われません。グラフの中心である(0、0)の2-D起点を考えるよりも、少なくとも間違ってはなりません。あなたは質量の点で中心と位置を混同している場合でも、センターの観点から思考するのに苦労するかもしれません。

これが役に立ちます。

+0

私はそれを持っていると思います...私が正しい場合、備品は*位置*に付けられ、基本的にそれを中心にしていますか? – Dovahkiin

関連する問題