2016-11-22 15 views
1

クイック質問libgdx解像度/密度スケーリングアセット

私はlibgdxのゲームに取り組んでいます。私は資産を拡大しようとしていますが、密度を取得してそれを乗数として使用して資産サイズを設定するにはGdx.graphics.getDensity()を使用しています。私が抱えている問題は、2560x1600の解像度を持つタブレットでは密度が2.0ですが、1080x1920のネクサス5エミュレータの密度は2.652です...タブレットの密度が小さいほど?

濃度が信頼できない場合は、アンドロイドアプリの画面サイズに基づいて乗数を取得するにはどうすればよいですか?

答えて

3

最初の質問に答えるには、ハードウェアのことです。 Nexus 5の解像度は、解像度が小さいにもかかわらず、おそらく秒あたりのPPI(ピクセル/インチ)比が高くなります。

Gdx.graphics.getDensity()の代替案を提案します:アセットが画面に対して同じサイズであることを確認する場合(つまり、2560x1600ディスプレイの80x80アセットはサイズの半分になります) 1280x800のディスプレイで)、あなたはあなたの資産を同じサイズにしておきたいと思います。カメラのサイズを代わりにに変更してください。

あなたはlibGDXでゲーム(または任意のゲームエンジン)を作成するとき、あなたは心の中でサイズ3セットの間の差を維持する必要があります/あなたのゲームでの位置座標:

  • ビューポートサイズがサイズですあなたのゲームが描くあなたの画面上のスペースの。これはピクセルで測定され、デフォルトではウィンドウサイズになります(フルスクリーンゲームでは、画面のサイズ)。
  • ゲームワールドサイズ/座標は完全に任意です。それらはあなたが望むどんな単位でも測定されます(メートル、インチ、バナナ、F16など)。あなたは浮動小数点数を持っているため、ゲーム世界単位で作業していることがわかります。
  • カメラサイズはゲーム単位で一度に見ることができる「世界」の量です。カメラで世界の1280x800部分、または世界の3x5部分、または137.6x42部分を表示させることができます。難しいのは、libGDXのOrthographicCameraクラスがビューポートサイズをデフォルトに設定し、1ゲームユニット== 1ピクセルのように動作することです。

うまくいけばうまくいきました。含意を見てみましょう:

は、私は私のゲームの世界で0,0の800x600のGU(ゲームユニット)の資産を持っていると言います。私のビューポートサイズは2560x1600で、私のカメラは2560x1600にもスケーリングされています。私の800x600 GUオブジェクトは、画面上に800x600ピクセルの画像をレンダリングします。

は今、私はポートに同じ比率(ちょうど今の物事をシンプルに保つために)と、他の画面サイズに私のゲームをしたいとします。私はまだ2560x1600のビューポートサイズを持っていますが、カメラを8x5 GUに、私のゲームオブジェクトを2.5x1.875 GUに変更します。これらのサイズは、ビューポートサイズとは関係なく明示的に設定されます。これにより、1 GU = 320ピクセルになります。結果として、私のゲームオブジェクトはまだ画面上に800x600ピクセルの画像をレンダリングします。

これは1280x800px解像度でどのように動作するかを見ていきます。私のビューポートは1280x800ピクセルですが、カメラは8x5 GUと私のゲームオブジェクトは2.5x1.875 GUにとどまっています。カメラのサイズが1 GU = 160ピクセルなので、私のゲームオブジェクトは400×300でレンダリングされます。つまり、小さな画面では同じサイズになります。

これは、画像なしでうまくいけばうまくいきました。アスペクト比が異なるスクリーンを使用する場合(8x5スクリーンから3x2スクリーンに移動する場合)、ビューポートのアスペクト比をカメラと同じに保つために少し余分なロジックが必要です(そうしないとすべてが伸びます)。幸いにも、libGDXはsome viewports which will do this for youを提供します。

external tutorialは、libGDXコミュニティで見つけられます。ここでは、この問題について詳しく説明しています。

+0

実際には非常に有益です!ビューポートとカメラを使用しようとしましたが、正しく動作することはありませんでした。私のゲームは画面の動きのないパズルのようなゲームなので、カメラは常に同じ場所にとどまります。本当に必要なのはタブレットの上にあります。私の資産はx2といっしょに増えます小さな画面では、資産はx.75で拡大縮小されます。私はちょうどより大きな画面で同じように見えるように画像を望みます。イムは、単純なことについて何かをする最良の方法は何か分からないのですか?私は壁に打ち続ける。 – johnnyboy5566

+0

正直なところ、複数の解像度を検討しても、私はまだカメラを使います。部品を動かすと、多くのメリットが実際に現れますが(そして、将来、効果の動きを追加しないと言っていることはありますが)、それでも良い習慣です。初めての方が少し複雑ですが、それほど難しいことではありません。 – John

+0

ありがとうございました!最後に愚かな質問... imageButton、ボタン、チェックボックスなどの資産を保持するテーブルを持っている場合、imageButtonを使用して、カメラとビューポートはどのようにテーブルサイズを大きくしますか?カメラやビューポートを実装する方法についてのリンクがあるかもしれません。なぜなら、私は私の背景を得ることができるからです。私はbatch.draw(ing)ですが、ビューポートとカメラがテーブル内のすべてのアセットを増やすように見えませんか? – johnnyboy5566