Libgdx 如何正确渲染渲染器
我在使用Box2DebugRenderer进行渲染Box2D调试时遇到一些问题。 我有两个正交摄影机,一个用于渲染世界(名为Cam),另一个用于HUD(healthBar,Armor,…)(名为hudCam) 我试图呈现: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
- b2dr.render(世界,cam.combined);->我看不见盒子
- b2dr.render(世界、cam.projection);
- b2dr.render(世界,hudCam.combined);
- b2dr.render(世界,hudCam.projection);
- b2dr.render(世界,新正交摄影机()。组合);和b2dr.render(世界,新正交摄影机().投影)
Thx.不幸的是,一些教程建议在使用
Box2D
时使用米到像素的转换。这不是必需的(至少对于Libgdx是如此),因为这种转换可以通过使用相机来完成。本例中的问题是,在渲染
Sprite
s时使用米到像素转换,而box2debugrenderer
以1:1的比例渲染所有内容。要解决这个问题,您必须摆脱米到像素的转换,并使用
相机
或视口
来“缩放”物体。通过这种方式,
box2debugrenderer
和您的SpriteBatch
可以(并且应该)使用相同的相机进行渲染
对于摄影机
/视口
:
构造函数具有参数宽度和高度。这些参数通常设置为Gdx.graphics.getWidth()
和Gdx.graphics.getHeight()
,在我看来这是不对的,游戏应该是独立于分辨率的。
您应该根据您的播放器(或任何其他可见实体)在现实生活中的大小以及它在屏幕上的大小来选择这些值。
假设你有一点个性,就像在游戏中一样。在real live中,它的高度为1米,应该是屏幕高度的1/13(与第一张照片差不多,屏幕高度约为角色的13倍)。
因此,您的相机高度应为13,字符高度(也是Box2D
sBody
height)应为1米。接下来需要定义宽度。为此,我喜欢考虑我想要的纵横比。假设游戏应该关注16/9设备,宽度为(13/9)*16=23
现在,您的相机应按如下方式创建:
camera = new OrthographicCamera(23, 13);
您是否正在为您的精灵使用米到像素的转换?是的,我看到了潜在的问题!我会看看,谢谢:)谢谢你的回复!!!非常清楚!我现在就试试这个!非常感谢你,祝你周末愉快:)工作做得很好!!但是,只是,我如何在gameZoom功能中渲染DebugBox2D(在游戏中会发生变化)?您总是使用相同的摄影机进行渲染,因此您只需放大该摄影机,DebugRenderer就会使用相同的摄影机进行渲染zoom@pikameuh为了澄清我之前的评论(并确保您得到通知):放大和缩小,您可以使用相机进行缩放。缩放(或移动)摄影机后,应调用camera.update()
以更新其视图和投影矩阵。然后,您可以使用camera.combined
matrix.Thx!!非常有用!