当前位置: 首页 > 知识库问答 >
问题:

如何正确渲染Box2DDebugRenderer

万俟超
2023-03-14

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

我试图渲染:

>

  • b2dr。渲染(世界,凸轮组合)-

    我找不到一种方法来渲染Box2D完全像凸轮,看到所有机构的边缘。

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

    谢谢。

  • 共有1个答案

    吕俊美
    2023-03-14

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

    对于摄影机视口,构造函数具有参数宽度和高度。这些参数通常设置为Gdx。图样getWidth()和Gdx。图样getHeight(),这在我的选项中是不对的,游戏应该与分辨率无关<相反,你应该根据你的玩家(或任何其他可见实体)在现实生活中的大小以及它在屏幕上的大小来选择这些值<假设你有一个小角色,就像在游戏中一样。在真实生活中,它有1米高,应该占屏幕高度的1/13(或多或少像你的第一张照片,屏幕大约是角色的13倍高)<所以你的相机高度应该是13,你的角色高度(也是Box2D的高度)应该是1米。接下来需要定义宽度。为此,我想考虑一下我想要的纵横比。假设游戏应该关注16/9个设备,那么宽度是(13/9)*16=23<现在,您的相机应该这样创建:

    camera = new OrthographicCamera(23, 13);
    
     类似资料:
    • 在我的主类下面,我试图从搅拌机渲染一个obj. obj文件,在将其重新格式化为(据称)为我的渲染工作后,它会出现错误。我如何解决这个问题? 主要类: OBJLoader类: 类别模型: 类面: 对不起,如果这是过度的,我知道错误来自第85行,但我似乎不知道如何修复它。 OBJ文件示例(精简):

    • 每当我运行这个,窗口就会弹出,我看到这个。(当我运行游戏时,我看到了这一点) 如果您简单地创建一个新的Java项目,导入OpenGL、GLFW和LWJGL以及本机,然后复制代码,就可以重新创建它(删除包)

    • 我在GeoServer中正确显示国家边界时遇到问题,您可以从下面的链接(意大利地图)中看到。 http://trideg.server.de/tridec/wms?service=WMS 问题出现在边缘非常锋利的国家边界上(我假设),例如阿尔巴尼亚的形状正确地显示: http://trideg.server.de/tridec/wms?service=WMS 我从naturalearthdata.

    • 我看不到子组件内部的文本。子级呈现为大小为0x0且为空。 那是由路由器引起的吗? 这是我的代码: App.js: REPODetails.js: 这是child committersCard.js: 我用的是4号路由器。

    • 在控制台上获取以下第一行: 35026:1978749]CoreText注意:客户端请求的名称“.SFNS-Regular”,它将获得Times-Roman而不是预期的字体。所有系统UI字体访问都应通过适当的API,如CTFontCreateUIFontForLanguage()或[NSFont systemFontOfSize:]。2021 06月09日00:00:46.808 java[350

    • 注意:很抱歉链接/图片只不过是文本-作为一个新用户,我不能张贴图片,也不能张贴 所以我一直在使用被弃用的OpenGL,并在几周前决定最终转向更现代的方法。我使用Open.gl作为资源(我发现LWJGL教程是不一致和稀疏的),并且能够渲染到本教程的最后一幅图像。然而,我在下一页遇到了一些严重的问题(渲染一个立方体)。 我在这个问题上做了很多研究,并多次改进/重新组织我的代码,以便完全理解每个组件的用