2014-10-09 160 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