我制作了一款小行星游戏,但在使用不同的屏幕尺寸时遇到了问题。是的,我知道视口(viewport),但就我而言,我认为这行不通。我尝试使用它,但我的对象不是图像。相反,它们是由 ShapeRenderer 渲染的,因此我猜视口(viewport)可能不会影响它们。我已经解决了如何使文本适合大多数类型的智能手机屏幕,但不适合渲染对象(如玩家和小行星)。在某些屏幕上,它们的尺寸是完美的,而在其他屏幕上,它们要么太小,要么太大。
有没有办法在 libGDX 中缩放渲染(ShapeRenderer)类型,以便它们适合屏幕尺寸/分辨率?或者我必须尝试为可以使用的常见解决方案实现一个类?
这是说明问题的两张图片。顺便说一句,图像中的文本已经固定。
编辑:
现在可以为 ShapeRenderer 创建和应用视口(viewport),但我仍然遇到同样的问题。 视口(viewport)内的游戏对象不会缩放以适合当前屏幕。我需要一种方法来使用视口(viewport)(如果可能)缩小游戏对象。游戏的实现方式是智能手机屏幕的尺寸就是游戏世界尺寸。因此,如果屏幕很小,那么移动飞船的空间就很小。我希望对象在适合视口(viewport)大小的区域中移动。游戏不应该根据屏幕尺寸变得更难或更容易。
左侧示例:智能手机大屏幕上的游戏
右侧示例:ShapeRenderer 视口(viewport)正在工作
最佳答案
创建视口(viewport)是为了减少在不同尺寸的屏幕上渲染所需的工作量。因此非常适合这种情况。
为了将视口(viewport)与 ShapeRenerer 一起使用,您只需将 ShapeRenderer 的投影矩阵设置为视口(viewport)相机中的投影矩阵即可。
shapeRenderer.setProjectionMatrix(veiwport.getCamera().combined);
这意味着 shapeRenderer 将按照配置视口(viewport)的方式进行渲染。
关于java - 使用 ShapeRenderer 缩放 libGDX 中渲染的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878447/