前回のサンプルをスマフォ上で実行すると、縦長に表示されてしまします。
デフォルトの描画領域は画面全体になってしまうので、
縦横比がデバイスに依存してしまうためです。
今回は、前回のサンプルに縦横の比を調整を入れます。
さまざまな、デバイスがあるため縦横比をどうするかは、、、作りたいアプリ次第です。
今回は、横:縦 = 2:3 で設定します。
ちなみに、どんな縦横比があるかは、このページが参考になります。
iPhone/Android画面解像度早見表【2011年〜2013年夏最新機種】
カメラの論理サイズを (10,15) にしているので、縦横比が 2:3 になるように viewPort を設定します。
サンプルソース(抜粋)
・・・
private Vector2 camPos;
private static final float LOGICAL_WIDTH = 10.0f;
private static final float LOGICAL_HEIGHT = 15.0f;
private Rectangle viewport;
@Override
public void create() {
camera = new OrthographicCamera(LOGICAL_WIDTH, LOGICAL_HEIGHT);
camPos = new Vector2();
batch = new SpriteBatch();
// 画像読み込み
texture = new Texture(Gdx.files.internal("data/image.png"));
// デバイスの画面サイズを取得
int physicalWidth = Gdx.graphics.getWidth();
int physicalHeight = Gdx.graphics.getHeight();
// 描画領域を計算
float viewWidth = physicalWidth;
float viewHeight = physicalWidth * 1.5f;
viewport = new Rectangle(0, (physicalHeight - viewHeight) / 2.0f,
viewWidth, viewHeight);
}
・・・
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// ビューポート(描画領域)を設定
Gdx.gl.glViewport((int) viewport.x, (int) viewport.y,(int) viewport.width, (int) viewport.height);
// カメラ位置を設定 (右上に移動)
camera.position.set(camPos.x + LOGICAL_WIDTH / 2.0f, camPos.y
+ LOGICAL_HEIGHT / 2.0f, 0.0f);
camera.update();
batch.setProjectionMatrix(camera.combined);
// 描画
batch.begin();
batch.draw(texture, 0, 0, 10.0f, 10.0f);
batch.end();
}
・・・
サンプルソースのダウンロードはコチラから

0 件のコメント:
コメントを投稿