私は現在、Android でゲーム エンジンを開始しています。最初にプラットフォームに進出し、基本を整えていますが、SurfaceView を使用してグラフィックを描画するときに、解像度の独立性にアプローチする最善の方法がわかりません。
ゲーム/スプライトなどを画面に関係なくすべて同じように見せる方法についての指針を探しています。明らかに、フレームごとにすべてのスプライトをスケーリングしたり、異なる解像度のために多くのバリエーションを保存したりすることは効率的ではありません
私は現在、Android でゲーム エンジンを開始しています。最初にプラットフォームに進出し、基本を整えていますが、SurfaceView を使用してグラフィックを描画するときに、解像度の独立性にアプローチする最善の方法がわかりません。
ゲーム/スプライトなどを画面に関係なくすべて同じように見せる方法についての指針を探しています。明らかに、フレームごとにすべてのスプライトをスケーリングしたり、異なる解像度のために多くのバリエーションを保存したりすることは効率的ではありません
ロードするときにスプライトをスケーリングするだけです。リソースからビットマップとしてロードしていると思いますよね?その場合は、次のようにする必要があります。
BitmapFactory.Options options = new BitmapFactory.Options();
options.outHeight = spriteHeight * scale;
options.outWidth = spriteWidth * scale;
Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options)
スケールは画面サイズの変更に基づいています。
2 つの簡単な方法があります。
初め:
サーフェス ビューの作成時に、以下を呼び出します。
onSizeChanged (int w, int h, int oldw, int oldh)
いくつかのグローバル変数 x & y を作成して、これを次のようにオーバーライドする場合:
onSizeChanged(int w, int h, int oldw, int oldh){
this.w=w;
this.h=h;
}
次に、描画またはゲームの計算で、ウィンドウ w と h を使用できます。
2番:
描画とゲームの計算で getWidth() & getHeight() を呼び出します。
あなたのゲームで頑張ってください!