2017-07-03 80 views
2

我正在玩SFML和Box2D,在SFML中,一個形狀的位置由它的左上角定義。另外,SFML基於屏幕左上角的(0,0)處理座標,x軸向右延伸,y軸向下延伸。Box2D如何處理位置和座標?

所以,我有兩個問題。

Box2D是否有一個概念的原點是特定的地方(如左上角或中心)或不是由於它呈現不可知論?

我讀了一個設置身體的位置集的對象的中心 vs左上角像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)的引力配對,並且具有如所描述的視覺表示的座標,那麼假設沒有任何內容,動態物體將視覺加速向下方法來阻止它。

設置身體的位置設置它相對於世界原點的位置。它還爲與身體相關的形狀(通過夾具)提供了一種排序的起源,因爲用於形狀的座標是相對於其相關體的位置的。

在回答你的最後一個問題,設置groundBodyDef位置(0.f, -10.0f)意味着與groundBodyDef創建的身體將被定位在(0.f, -10.0f)和附加到該機構的任何形狀將相對於該位置。把它看作一箇中心對我來說本身並不是錯誤的;至少沒有比考慮(0,0)的2-D原點是圖的中心更多的錯誤。就中心而言,你可能會遇到麻煩,儘管如果你在質量方面將位置與中心混爲一談。

希望這會有所幫助。

+0

我想我已經明白了......如果我是正確的,固定裝置被附加到*位置*,基本上使它成爲中心? – Dovahkiin