Libgdx 如何正确渲染渲染器

Libgdx 如何正确渲染渲染器,libgdx,Libgdx,我在使用Box2DebugRenderer进行渲染Box2D调试时遇到一些问题。 我有两个正交摄影机,一个用于渲染世界(名为Cam),另一个用于HUD(healthBar,Armor,…)(名为hudCam) 我试图呈现: b2dr.render(世界,cam.combined);->我看不见盒子 b2dr.render(世界、cam.projection); b2dr.render(世界,hudCam.combined); b2dr.render(世界,hudCam.projection

我在使用Box2DebugRenderer进行渲染Box2D调试时遇到一些问题。 我有两个正交摄影机,一个用于渲染世界(名为Cam),另一个用于HUD(healthBar,Armor,…)(名为hudCam)

我试图呈现:

  • b2dr.render(世界,cam.combined);->我看不见盒子

  • b2dr.render(世界、cam.projection);

  • b2dr.render(世界,hudCam.combined);

  • b2dr.render(世界,hudCam.projection);

  • b2dr.render(世界,新正交摄影机()。组合);和b2dr.render(世界,新正交摄影机().投影)

我找不到一种方法来渲染Box2D完全像cam一样,以查看所有实体的边缘

如果有人理解我的问题,请帮助我


Thx.

不幸的是,一些教程建议在使用
Box2D
时使用米到像素的转换。这不是必需的(至少对于Libgdx是如此),因为这种转换可以通过使用相机来完成。
本例中的问题是,在渲染
Sprite
s时使用米到像素转换,而
box2debugrenderer
以1:1的比例渲染所有内容。
要解决这个问题,您必须摆脱米到像素的转换,并使用
相机
视口
来“缩放”物体。
通过这种方式,
box2debugrenderer
和您的
SpriteBatch
可以(并且应该)使用相同的
相机进行渲染

对于
摄影机
/
视口

构造函数具有参数宽度和高度。这些参数通常设置为
Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
,在我看来这是不对的,游戏应该是独立于分辨率的。
您应该根据您的播放器(或任何其他可见实体)在现实生活中的大小以及它在屏幕上的大小来选择这些值。
假设你有一点个性,就像在游戏中一样。在real live中,它的高度为1米,应该是屏幕高度的1/13(与第一张照片差不多,屏幕高度约为角色的13倍)。
因此,您的相机高度应为13,字符高度(也是
Box2D
s
Body
height)应为1米。接下来需要定义宽度。为此,我喜欢考虑我想要的纵横比。假设游戏应该关注16/9设备,宽度为
(13/9)*16=23

现在,您的相机应按如下方式创建:

camera = new OrthographicCamera(23, 13);

您是否正在为您的精灵使用米到像素的转换?是的,我看到了潜在的问题!我会看看,谢谢:)谢谢你的回复!!!非常清楚!我现在就试试这个!非常感谢你,祝你周末愉快:)工作做得很好!!但是,只是,我如何在gameZoom功能中渲染DebugBox2D(在游戏中会发生变化)?您总是使用相同的
摄影机进行渲染,因此您只需放大该摄影机,DebugRenderer就会使用相同的摄影机进行渲染zoom@pikameuh为了澄清我之前的评论(并确保您得到通知):放大和缩小,您可以使用
相机进行缩放。缩放(或移动)摄影机后,应调用
camera.update()
以更新其视图和投影矩阵。然后,您可以使用
camera.combined
matrix.Thx!!非常有用!