我努力學習和理解box2d。這裏是我的問題:在理解Box2d中的身體位置時存在問題。任何關於事情如何工作的指針?
我試圖做一個簡單的汽車,車身看起來是這樣的現在:
現在我想添加一個輪子,我創建輪體,我假設我會使用b2RevolutionJoint將車輪連接到車身。
直到我到達那部分,我只是想能夠將車輪定位在它的位置,所以相對於bodyCar車身。我如何正確地做到這一點?
我已經在網上看到什麼是這樣的:
bodyDef2.position.Set(axle2->GetWorldCenter().x + 1.3*cos(-M_PI/3), axle2->GetWorldCenter().y + 0.3*sin(-M_PI/3));
不過,我不明白,表達的COS和罪部分。
我想要做的是這樣的:
backWheelDef.position = b2Vec2(carBody->GetWorldCenter().x - 20.0/PTM_RATIO,carBody->GetWorldCenter().y);
由於我的車體頂點的定義是這樣的:
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寬度爲100.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
感謝有點糊塗了!
你好,可以請你看看我以後編輯成我的問題,引導我嗎?謝謝! –
調試繪製繪製體位置之間的線(而不是大規模的中心,這是小紅和綠軸是什麼),所以這看起來是正確的。如果它在錨點位置之間劃出一條線,您將看不到任何東西,因爲錨點位置在相同位置(至少對於旋轉關節)。 – iforce2d
太好了,謝謝。我會將這個答案標記爲正確的 –