使用ShapeRenderer在libGDX中缩放renderered形状

时间:2018-06-15 15:17:01

标签: java libgdx scaling

我制作了一个小行星游戏,我遇到了不同屏幕尺寸的问题。是的,我知道视口,但在我的情况下,我认为这不起作用。我试过用它,但我的对象不是图像。相反,它们是由ShapeRenderer渲染的,因此我认为视口可能不会影响它们。我已经解决了如何适应大多数类型的智能手机屏幕的文本,但没有像播放器和小行星那样的渲染对象。在某些屏幕上,它们是完美的尺寸,其他屏幕太小或太大。

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

这是两张说明问题的图片。顺便说一下,图像中的文字已经固定好了。

Too large game objects

Too small game objects

修改

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

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

右侧示例:ShapeRenderer视口正在运行

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

创建视口是为了减少在不同大小的屏幕上进行渲染所需的工作。因此非常适合这种情况。

要使用带有ShapeRenerer的视口,只需将ShapeRenderer的投影矩阵设置为视口相机中的投影矩阵即可。

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

这意味着shapeRenderer将渲染视口的配置方式。