java - 使用 ShapeRenderer 缩放 libGDX 中渲染的形状

标签 java libgdx scaling

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

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

这是说明问题的两张图片。顺便说一句,图像中的文本已经固定。

Too large game objects

Too small game objects

编辑:

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

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

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

enter image description here enter image description here

最佳答案

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

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

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

这意味着 shapeRenderer 将按照配置视口(viewport)的方式进行渲染。

关于java - 使用 ShapeRenderer 缩放 libGDX 中渲染的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878447/

相关文章:

java - 在 android studio 中获取 android 4.0 中的位置时出现问题

java - Gson不反序列化JSON数据

java - LibGDX Scene2D 除了将所有内容乘以常数之外,还有一种不同的实现 GUI 比例设置的方法吗?

html - 背景图像缩放代码破坏 html 放置

java - 在 Java 中缩放图表以适合一个打印页面

java - 如何在 Facebook 弃用后添加标题和内容?

java - LibGDX - Gdx.graphics.getWidth() 如何返回显示表面的宽度?

android - libgdx : Clicklistener doesnt work on resize

css - 基于 CSS 的图像映射的不变缩放

java - 复杂作业的 Spring Batch 性能改进