0

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 を使用してこれを行う論理的な方法があるはずですが、機能するものを見つけることができないようです。これを処理する方法について何か提案はありますか?

4

2 に答える 2

0

考えられる問題は、マウス座標をワールド座標に変換していないことです。これは次の方法で行うことができます

もし (Gdx.input.justTouched())

{

camera.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));

}

ここで、touchPoint は Vector3 です。これで、コード内の任意の場所で touchPoint を使用できます。

于 2013-08-09T18:05:50.650 に答える