2014-05-01 46 views
0

我是LibGdx的新手。Libgdx - Box2DDebugRenderer.render和spritebatch.draw的區別

我試圖創建一個使用libgdx和物理學簡單的Android遊戲

至於我能理解,我們可以在「畫圖」物理實體對象(Box2D的身體的物體)或者通過:

debugRenderer.render(world, camera.combined); 

或類似:

batch.begin(); 
    sprite = (Sprite) circleBody.getUserData(); 
    sprite.setPosition(circleBody.getPosition().x - (sprite.getWidth() /2) ,  circleBody.getPosition().y - (sprite.getHeight()/2)); 
    sprite.setSize(45*2, 45*2); 
    sprite.draw(batch); 
    batch.end(); 

有人可以解釋我的兩者之間的區別? 我認爲使用debugRenderer.render作爲發佈/生產代碼並不理想。這是真的嗎?

回答

3

區別很簡單。 Box2dDebugRenderer使用起來非常簡單。它基本上只需要一行代碼(您已經在您的問題中編寫的代碼),它將呈現簡單的形狀,以便可視化您的Box2D World。它將呈現Fixture s,Joint s或Contact s的彩色正方形,圓形,線條和點。

您發佈的第二種方法完全是自制的。你可以畫任何你想要的Body。你可以自己繪製一個簡單的形狀,或者一個精靈,或者一個動畫甚至3D模型。也許什至都沒有。

這就是Box2D的「問題」。你創建的World純粹是一個物理世界,Box2D不知道如何渲染任何東西,這就是你必須自己做的。附加到Body的方形Fixture可能是一堵牆,它可能是一個箱子或一扇門。

This SO上的其他問題有幾張圖片,顯示了兩種渲染方法的不同之處。 (不幸的是,它們是在不同的地方渲染的,這就是這個問題的含義)。

enter image description here

+0

我可以使用Box2dDebugRenderer發佈代碼,或只是爲了調試的需要? – Arnab

+0

如果你想要的只是簡單的矩形,圓形和線條,那麼當然你可以在發佈版本中使用它。這是渲染世界的一種非常快速的方式。 – noone