2014-10-09 156 views
2

我的游戏使用的高度和宽度有多重要?在我的游戏中,我有几个多边形,它们都与我绘制的图像相连,但是当我的宽度和高度与800x480相同时,我必须将这些图像绘制得很小,这会导致它们变得模糊。另外,我不太明白这是如何在不同尺寸的手机屏幕上表现出来的,我绘制的图像是否被拉伸,或者即使在大型平板电脑上,它们也保持很小?所以我的问题基本上是什么是一个libgdx游戏的最佳宽度和高度?libgdx optimal高度和宽度

这是我的代码的一部分,以帮助也许你明白我的意思,如果我改变这些值

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); 
    } 

}

云图像的宽度为256P和高度128P,当我设置“摄像头。 setToOrtho(false,800,480);'这个云不会总是保持比例吗?

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

+0

考虑命名你的单位。 800x480是什么?米?英寸?哪些单位最适合您的游戏? – Xoppa 2014-10-09 18:32:00

+0

'getWidth'和'getHeight'为您提供以像素为单位的屏幕大小。设定摄像机的宽度和高度可以设定你的世界的可视区域,但单位可以是任何你喜欢的,就像Xoppa说的那样。如果你使用box2D,那么米是一个不错的选择。无论设备的尺寸和宽高比如何,您设置的800x480都将被拉伸以适应屏幕。所以如果你只是选择这样的固定值,它会在某些设备上看起来失真。查看处理此问题的Viewports上的libgdx文档。 – Tenfour04 2014-10-09 19:42:03

+0

hmm okey,所以..我不应该使用固定值在所有设备上看起来不错?我将阅读视口,但是,有没有办法让我看看如何不使用固定值的例子?如果我在32x32像素的photoshop中制作图像,如何以正确的方式实现该图像?现在我只是导入它,如果大小错误,我改变它在Photoshop中,似乎这是错误的 – user3486059 2014-10-09 19:55:26

回答

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(不是我,所以我推荐它)。

+0

,但你说'在不同的屏幕大小不同的视口大小',这听起来不错,并不意味着所有的照片在所有的照片上看起来都是一样的,或者它可能恰恰相反? – user3486059 2014-10-09 22:23:18

+0

它意味着相反。 – Lestat 2014-10-09 22:24:37

+0

当我创建了一个游戏,我曾经选择在我头脑中的米大小。如果我希望能够看到大约80米x和45米y,我创建了一个视口为80和45的“摄像机”。然后我创建了这些物体,再次在我头部有米(一个人体有一个尺寸2,因为它是2米左右)。你的看法是否错误? – Springrbua 2014-10-10 05:56:13