我正在用libgdx創建一個遊戲,我想在桌面上以更高的分辨率運行,但是我希望它能夠在小型分辨率下在Android上運行時正確縮放所有內容。我讀過這樣做的最好方法是不使用像素完美的相機,而是使用世界座標,但我不知道如何正確地做到這一點。如何創建一個能夠正確使用libgdx縮放我的精靈/貼圖的正交相機?
這是我現在所擁有的代碼:
@Override
public void create() {
characterTexture = new Texture(Gdx.files.internal("character.png"));
characterTextureRegion = new TextureRegion(characterTexture, 0, 0, 100, 150);
batch = new SpriteBatch();
Gdx.gl10.glClearColor(0.4f, 0.6f, 0.9f, 1);
float aspectRatio = (float)Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight();
camera= new OrthographicCamera(aspectRatio, 1.0f);
}
@Override
public void render() {
GL10 gl = Gdx.graphics.getGL10();
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
camera.apply(gl);
batch.setProjectionMatrix(camera.combined);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
draw();
}
private void draw() {
//batch.getProjectionMatrix().set(camera.combined);
batch.begin();
batch.draw(characterTextureRegion, 0, 0, // the bottom left corner of the box, unrotated
1f, 1f, // the rotation center relative to the bottom left corner of the box
0.390625f, 0.5859375f, // the width and height of the box
1, 1, // the scale on the x- and y-axis
0); // the rotation angle
batch.end();
}
紋理我使用的是256×256,在它是100x150的實際圖像。
這是結果我得到的,當我運行遊戲:http://i.imgur.com/q1cZT.png
什麼是着手做的最好辦法:http://i.imgur.com/HV9Bi.png
是被渲染的是巨大的,考慮到這是原始圖像的精靈這樣精靈就能以原始大小渲染,同時仍然保持在不同分辨率下玩遊戲時能夠正確縮放的能力?
我只找到兩種解決方案,我不喜歡這兩種解決方案。
- 如果我使用相機的像素座標,圖像顯示了它應該如何處理,但是當我用不同的分辨率將其放在手機上時,圖像根本沒有縮放。
- 我可以在繪製時縮放紋理區域,但它似乎有更好的方法,因爲試圖找出正確的數字以縮放它非常繁瑣。
嘗試使用FitViewport類 – Eames