2013-11-14 61 views
0

如何用JBox2D繪製元素?我很好,使用DebugDraw,我只是想找到一個快速的方法來做到這一點在Java中,因爲我沒有與圖形工作太多。JBox2D - 使用DebugDraw繪圖

我需要使用畫布嗎?或者一個JFrame?當世界知道我怎麼叫

world.drawDebugData() 

在哪裏畫它?

我怎麼可以設計出一個能夠在我想要的地方繪製點的類,並將其與JBox2D集成?

... 

while(true) 
    world.step(timeStep, velocityIterations, positionIterations); 
    Vec2 position = body.getPosition(); 
    float angle = body.getAngle(); 
    System.out.printf("%4.2f %4.2f %4.2f\n", position.x, position.y, angle); 
} 

我想我可以把這個代碼放在這個while循環內的某個地方,但我並不確定在哪裏。每當世界步驟時有沒有一個函數被調用?我可以在那裏放置繪圖功能嗎?我甚至可以使用DebugDraw,如果我能想出它...

請你幫我理解什麼樣的類會採用世界對象中的所有對象並不斷繪製它們? (以及在哪裏繪製?)

+0

看看這個。它在C++中,但基本上是同樣的問題。 http://stackoverflow.com/questions/3111321/box2d-how-to-manually-render-a-body –

+0

@MartijnCourteaux謝謝!那麼我將如何使用DrawBody類?什麼是SDL_Surface *緩衝區?我很樂意將您的答案標記爲正確並讚揚它! –

+0

SDL是一個C++庫,用於在大多數情況下創建遊戲。但是,您可以用一些OpenGL或Java Graphics替換渲染邏輯。我的文章展示瞭如何確定Box2D世界中多邊形頂點的位置。 –

回答

0

如果你不習慣編程遊戲和物理引擎,很難知道從哪裏組織。

Dyn4j是另一個偉大的物理圖書館,它有很好的例子解釋了把所有東西放在哪裏以及用戶如何與世界進行交互。關於dyn4j庫與box2d/jbox2d很相似,所以如果你只是快速地嘗試一下他們的例子,它會幫助你弄清楚如何在box2d中渲染圖形。

0

您可以輕鬆地創建新的測試牀測試,這是測試您的新物理想法並且不用擔心繪圖和GUI的最佳方法。它甚至支持添加額外的實時選項。看看這裏: https://code.google.com/p/jbox2d/wiki/Testbed

+0

我打開使用測試牀,但對於我的生活,我無法弄清楚如何做我自己的實現。任何幫助? –

+0

你可以在那裏複製任何測試,他們都包括在內。 –