使用 ShapeRenderer 在 libGDX 中缩放渲染形状

Scaling renderered shapes in libGDX using ShapeRenderer

我制作了一款 Asteroids 游戏,但遇到了不同屏幕尺寸的问题。是的,我知道视口,但就我而言,我认为这行不通。我试过使用它,但我的对象不是图像。相反,它们是由 ShapeRenderer 渲染的,因此我猜视口可能不会影响它们。我已经解决了如何使文本适合大多数类型的智能手机屏幕,但不适合播放器和小行星等渲染对象。在某些屏幕上,它们的尺寸恰到好处,而在其他屏幕上,它们要么太小,要么太大。

有没有一种方法可以缩放 libGDX 中渲染的 (ShapeRenderer) 类型,以便它们适合屏幕尺寸/分辨率?或者我必须尝试为可以使用的常见分辨率实现 class 吗?

这里有两张图片可以说明问题。图片中的文字已经顺便修复了。

编辑:

现在可以为 ShapeRenderer 创建和应用视口,但我仍然遇到同样的问题。 视口内的游戏对象未缩放以适合当前屏幕。我需要一种方法 使用视口缩小游戏对象(如果可能的话)。游戏的实现方式是智能手机屏幕的大小是游戏世界大小。因此,如果屏幕很小,几乎没有 space 可以移动船。我希望 对象在适合视口大小 的区域内移动。游戏 不应根据屏幕大小 变得更难或更容易。

左侧示例:智能手机大屏幕上的游戏

右侧示例:ShapeRenderer 视口正在工作

创建视口是为了减少在不同尺寸的屏幕上渲染所需的工作量。所以非常适合这种情况。

为了将视口与 ShapeRenerer 一起使用,您只需将 ShapeRenderer 的投影矩阵设置为视口相机中的投影矩阵。

shapeRenderer.setProjectionMatrix(veiwport.getCamera().combined);

这意味着 shapeRenderer 将按照配置视口的方式呈现。