すべての Android 画面に合うように、Libgdx に付属のサイズ変更機能を埋めようとしています。
私がこれまで見てきた最善の解決策は、このチュートリアルです: http://www.java-gaming.org/index.php?topic=25685.0しかし、Galaxy S3 で実行すると、ボタンが非常に小さく、全体的に全体的に表示されます。ゲームは小さく、デスクトップ版では大きく、私が望んでいる方法です。現在のサイズ変更コードは次のとおりです。
@Override
public void resize(int width, int height) {
float aspectRatio = (float)width/(float)height;
float scale = 2f;
Vector2 crop = new Vector2(0f, 0f);
if(aspectRatio > ASPECT_RATIO)
{
scale = (float)height/(float)VIRTUAL_HEIGHT;
crop.x = (width - VIRTUAL_WIDTH*scale)/2f;
}
else if(aspectRatio < ASPECT_RATIO)
{
scale = (float)width/(float)VIRTUAL_WIDTH;
crop.y = (height - VIRTUAL_HEIGHT*scale)/2f;
}
else
{
scale = (float)width/(float)VIRTUAL_WIDTH;
}
float w = (float)VIRTUAL_WIDTH*scale;
float h = (float)VIRTUAL_HEIGHT*scale;
viewport = new Rectangle(crop.x, crop.y, w, h);
}
私のレンダリングコードは次のとおりです。
@Override
public void render() {
// update camera
camera.update();
// set viewport
Gdx.gl.glViewport((int) viewport.x, (int) viewport.y,
(int) viewport.width, (int) viewport.height);
// clear previous frame
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
ScreenManager.updateScreen();
sb.begin();
ScreenManager.renderScreen(sb);
sb.end();
}
そして、私の変数は次のとおりです。
private static final int VIRTUAL_WIDTH = 600;
private static final int VIRTUAL_HEIGHT = 800;
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;
public static BitmapFont FONT;
private OrthographicCamera camera;
private Rectangle viewport;
private SpriteBatch sb;
私が言ったように、デスクトップ版を実行すると問題なく動作しますが、Galaxy S3 (画面の薄さ: 1,280 x 720) で実行すると、ゲームが大幅に縮小され、ゲームの上部と側面がトリミングされます。これは私がまったく望んでいるものではありません。