Libgdx - Box2DDebugRenderer.render和spritebatch.draw之间的区别

时间:2014-05-01 11:37:32

标签: android libgdx game-physics

我是LibGdx的新手。

我正在尝试使用libgdx和物理

创建一个简单的安卓游戏

据我所知,我们可以通过以下方式“绘制”物理体对象(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用于发布/生产代码并不理想。这是真的吗?

1 个答案:

答案 0 :(得分:3)

区别很简单。 Box2dDebugRenderer非常简单易用。它基本上只需要一行代码(你已经在你的问题中写过的代码),它将呈现简单的形状来可视化你的Box2D World。它将为FixtureJointContact s呈现彩色方块,圆圈,线条和点。

您发布的第二种方法完全是自制的。您可以为Body绘制任何内容。您可以自己绘制一个简单的形状,或精灵,或者动画甚至3D模型。也许什么都没有。

那是"问题"与Box2D。你创建的World纯粹是一个物理世界,Box2D不知道如何渲染任何东西,这就是你自己要做的事情。与Fixture相关联的平方Body可以是墙,也可以是方框或门。

关于SO的

This其他问题有一些图片显示了两种渲染方法的区别。 (不幸的是,它们是在不同的地方呈现的,这就是这个问题的关键所在。)

enter image description here