0

これに沿った何かについて以前に投稿しました。これはフォローアップです。既存の Java ゲームを進行中です。約95%完成です。libGdx をインストールした場合、既存の Java コードを LibGDX の正投影カメラで使用して Android アプリを作成できますか? カメラを使用して画面のサイズを調整し、電話に収まるようにする予定です。私は spritebatch などのようなものを使用するつもりはありません。誰でも経験がありますか?

4

1 に答える 1

1

それはうまくいきます。気になるメソッドは、libgdx エンジンからの GL コンテキストに依存しないため、OrthographicCamera をインスタンス化して、独自のゲーム コード内から通常どおり使用できます。

setToOrtho空のコンストラクターで OrthographicCamera をインスタンス化し、画面のビューポートに必要な幅と高さでそれを呼び出します。これは、スプライトのスケールに使用している単位によって異なりますが、次のようにしてビューポートを設定できます。

private static final float MIN_SCENE_HEIGHT_IN_GAME_UNITS= 480f; //FOR EXAMPLE
private static final float MIN_SCENE_WIDTH_IN_GAME_UNITS= 760f;

   if (((float)screenWidthInPixels/(float)screenHeightInPixels) > (MIN_SCENE_WIDTH_IN_GAME_UNITS/MIN_SCENE_HEIGHT_IN_GAME_UNITS)){
       orthoCam.setToOrtho(false, MIN_SCENE_HEIGHT_IN_GAME_UNITS*(float)screenWidthInPixels/(float)screenHeightInPixels, MIN_SCENE_HEIGHT_IN_GAME_UNITS);
   } else {
       orthoCam.setToOrtho(false, MIN_SCENE_WIDTH, MIN_SCENE_WIDTH_IN_GAME_UNITS*(float)screenHeightInPixels/(float)screenWidthInPixels);
   }

上のfalses は y が上を向いているので、必要に応じて反転できます。カメラを 0,0 に移動する必要がある場合は、 を呼び出しorthocam.position.set(x,y,z)てからを呼び出しますorthocam.update()

次に、必要な行列を から取得できますorthographicCamera.combined

GL ES 1.0 を使用している場合は、次のようにマトリックスを設定できます。

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadMatrixf(orthographicCamera.combined.val, 0);

orthographicCamera.combinedそれ以外の場合は、シェーダーで直接使用できます

OrthographicCamera クラスとそのスーパークラス Camera をプロジェクトに複製し、使用しないメソッドを削除してエンジンの他の部分への依存関係を削除し、Vector3 と Matrix4 の独自のバージョンを使用するように切り替えることもできます。

于 2014-03-05T19:21:28.400 に答える