libgdx最佳高度和宽度

时间:2014-10-09 18:21:03

标签: java android libgdx

我用于游戏的高度和宽度是否重要?在我的游戏中我有一些多边形,它们都连接到我画过的图像,但是当我的宽度和高度为800x480时,我必须将图像绘制得非常小,这会使它们变得模糊。此外,我真的不明白这在不同尺寸的手机屏幕上的表现如何...,我画的图像是否会拉伸,或者它们是否保持小,即使在大平板电脑上也是如此?所以我的问题基本上是libgdx游戏的最佳宽度和高度是多少?

这是我的代码的一部分,可能会帮助您理解我的意思

    WIDTH = Gdx.graphics.getWidth();
    HEIGHT = Gdx.graphics.getHeight();

    camera = new OrthographicCamera();
    camera.setToOrtho(false, 800, 480 );

如果我更改这些值会怎样?改变它们最好的是什么?

我正在阅读各种教程,但他们并没有真正谈论这一部分。

我是否必须做一些复杂的事情才能使我的彩绘图像在所有设备上看起来都不错?

编辑:

这就是我目前在我的游戏中实现云的方式:

public class AnotherScreen implements Screen{

Polygon cloudPoly;
Texture cloud;

    @Override
public void render(float delta) {

    batch.setProjectionMatrix(camera.combined);

    batch.begin();
    renderBackground();
    batch.draw(cloud,cloudPoly.getX(),cloudPoly.getY());
    batch.end();

    }

    @Override
public void show() {
    cloud = new Texture(Gdx.files.internal("assets/textures/cloud.png"));
            cloudPoly = new Polygon();
    cloudPoly.setPosition(MathUtils.random(350,600),MathUtils.random(380,440));

    // theses vertices are just a little square atm
    float[] cloudVertices = new float[] {
            0,0,
            0,20,
            20,20,
            20,0
    };
    cloudPoly.setVertices(cloudVertices);
    }

}

当我设置“camera.setToOrtho”(false,800,480)时,云图像的宽度为256p,高度为128p;'不知道这云总是保持比例吗?

我很抱歉,如果我不清楚,我是一个新的程序员,我的英语可能会更好,爱你,因为和我在一起!

1 个答案:

答案 0 :(得分:3)

  

我画的图像是否会拉伸,或者它们是否仍然很小,即使在大平板电脑上也是如此?

libgdx的一个最大特点是它可以让你完全按照自己的意愿行事。所以,这真的是你的选择。使用此代码段

WIDTH = Gdx.graphics.getWidth();
HEIGHT = Gdx.graphics.getHeight();

camera = new OrthographicCamera();
camera.setToOrtho(false, WIDTH, HEIGHT);

每种不同的屏幕尺寸都会有不同的视口大小。所以你的图像会保持很小。

另一方面,如果您为视口使用预定义值,例如:

WIDTH = 800;
HEIGHT = 480;

camera = new OrthographicCamera();
camera.setToOrtho(false, WIDTH, HEIGHT);

您将为每个屏幕获得相同的视口,并且图像将拉伸以占据每个轴中的相同空间。对于每个轴,这不一定是相同的。因此,在一个屏幕中的完美方形图像可能看起来像另一个具有不同x-y比率的屏幕中的矩形。

还有第三种选择,您可以修复一侧并让另一侧进行计算,这样您就可以保持图像的比例(正方形保持为正方形)。你必须决定固定方面是什么。对于像Super Mario Bros这样的游戏,我建议您修正高度并计算宽度:

HEIGHT = 480;
WIDTH = (Gdx.graphics.getWidth()/Gdx.graphics.getHeight())*HEIGHT;

camera = new OrthographicCamera();
camera.setToOrtho(false, WIDTH, HEIGHT);

每个屏幕都会在游戏世界中看到相同的高度。但有些屏幕的宽度会比其他屏幕更多。如果这对你来说是一个问题(你希望他们看到世界上相同但也保持比例),那么可以选择在每一侧添加黑条。

  

所以我的问题基本上是libgdx游戏的最佳宽度和高度是什么?

最佳解决方案是针对多种分辨率使用不同的图像集。在运行时选择最合适的是什么。但这会大大增加游戏规模。

另一种肮脏的方式是只有一个大集合,让图像以较低的分辨率收缩。它看起来比逆向好。但是有些人认为这太脏了:p(不是我,所以我推荐它)。