libgdx
複数の決議を支持する
サーチ…
ビューポート
複数の解像度とアスペクト比をサポートするため、LibgdxはいわゆるViewports
ポートを使用しViewports
。
複数の解像度とアスペクト比を処理するために異なる戦略を使用するいくつかのタイプのViewports
あります。
Viewport
使用するCamera
ボンネットの下に、それはだ管理viewportHeight
とviewportWidth
。必要に応じて、 Viewport
コンストラクタ内のCamera
を指定することもできます。そうでない場合は、デフォルトでOrthographicCamera
が使用されます。
private Viewport viewport;
private Camera camera;
public void create() {
camera = new PerspectiveCamera();
viewport = new FitViewport(8f, 4.8f, camera);
}
さらに、ビューポートのコンストラクタにworldWidth
とworldHeight
を指定する必要があります。このスペースは、描画するオブジェクトの位置とサイズを指定するために使用する仮想座標系を表します。たとえば、SpriteBatchに適用できるビューポート変換は、使用している実際のタイプのビューポートに適合する方法で、論理座標を実際の画面座標に自動的に変換します。たとえば、正射投影( OrthographicCamera
、デフォルト)が使用されている場合:ワールドサイズが12.8 x 7.8メートルで、デバイスの画面サイズが2560×1560ピクセルの場合、世界は200ピクセル/メートルで動的に投影されます。
Viewport
のサイズが変更されたViewport
(たとえば、Smartphoneの画面の向きが変更されているViewport
、その変更についてViewport
に通知する必要があります。 Camera
のviewportHeight
とviewportWidth
自動的に更新します:
public void resize(int width, int height) {
viewport.update(width, height);
}
Viewport
また、 OpenGL Viewport
を管理し、必要に応じて描画可能領域を変更します。
Viewport
、画面座標をゲーム座標に変換することにも注意します。これは特にピッキングに必要です。
private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
worldPos.set(x, y);
viewport.unproject(worldPos);
processPicking(worldPos);
}
内蔵ビューポート
それぞれが異なることをする組み込みのビューポートがいくつかあります。名前のリストとその説明は次のとおりです。
ビューポート名 | 説明 |
---|---|
StretchViewport | 画面が引き伸ばされます。黒い棒はありませんが、縦横比はオフになっている可能性があります。 |
FitViewport | アスペクト比に基づいてサイズを最大化します。黒い棒がありました。 |
FillViewport | FitVieportと全く同じですが、常に画面全体を塗りつぶします。 |
ScreenViewport | 常に画面全体を塗りつぶしますが、子のサイズは変更しません。 |
ExtendedViewport | 世界を一方向に拡張することによって、黒い棒のない世界のアスペクト比を維持する |
CustomViewport | カスタムプログラムされたビューポート。黒いバーがあり、アスペクト比を維持する可能性があります。 |
カスタムビューポート
独自のカスタムビューポートを作成することができます。それは黒い棒を持っているかもしれません、そして、あなたがそれをどのようにプログラムするかによって、それは縦横比を保つかもしれません。カスタムビューポートは次のようになります。
public class Tutorial extends Viewport
。 update(width, height)
をオーバーライドupdate(width, height)
必要がありますが、それだけです。
別の試みは、一般的なScalingViewport
を拡張し、まだ提供されていない別のScalingを提供することです。 Scaling.none
設定したとします。これは次のようになります。 参照が必要な場合は、 ここに組み込みビューポートクラスがあります 。
StretchViewport
StretchViewport
は、仮想画面サイズをサポートするViewport
型です。
これにより、固定された(解像度に依存しない)幅と高さを定義することができます。
StretchViewport
は、名前が示すように、仮想アスペクト比が実際のアスペクト比と一致しない場合、仮想画面を引き伸ばします。 OpenGLビューポートは変更されず、黒いバーが表示されません。
使用法:
private Viewport viewport;
private Camera camera;
public void create() {
camera = new OrthographicCamera();
viewport = new StretchViewport(80, 48, camera);
}
public void resize(int width, int height) {
viewport.update(width, height);
}
FitViewport
FitViewportsは常にアスペクト比を維持するビューポートです。これは、スペースが残っている辺に黒いバーを作成することで行います。これは最も一般的に使用されるビューポートの1つです。
使用法:
private Viewport viewport;
private Camera camera;
public void create() {
camera = new OrthographicCamera();
viewport = new FitViewport(80, 48, camera);
}
public void resize(int width, int height) {
viewport.update(width, height);
}