OK、この件に関するすべての Google エントリを読みましたが、どの道をたどればよいかまだわかりません。現時点で私のセットアップは次のとおりです。
static final float WIDTH = 800;
static final float HEIGHT = 600;
@Override
public void resize(int width, int height) {
camera = new OrthographicCamera(WIDTH, HEIGHT);
camera.position.set(WIDTH / 2, HEIGHT / 2, 0);
glViewport = new Rectangle(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
...
}
public void render(float delta) {
GL20 gl = Gdx.graphics.getGL20();
gl.glClearColor(1, 0, 0, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glViewport((int) glViewport.x, (int) glViewport.y,
(int) glViewport.width, (int) glViewport.height);
camera.update();
....
}
これは私の画面全体に広がる素晴らしい仕事をしますが、大きな欠点があります。プロポーションは引き伸ばされません。たとえば、800x600 の世界でスプライトを定義すると、1280x720 の画面でもまったく同じままです。また、800x600 の 400px の位置は 1280x720 の画面では同じではないため、これは特定の位置に配置されたスプライトに影響します。また、触れた場合に何かが発生する特定の地域もありますが、私の解決策とインターネットで見つけた解決策も機能しません。縦横比については、考えるたびに頭が痛くなるので、話さないようにしましょう。
多くのゲームがリリースされているため、libGdx を使用してこれを行う論理的な方法があるはずですが、機能するものを見つけることができないようです。これを処理する方法について何か提案はありますか?