0

解像度 480*800 の画面用のゲームを開発していますが、他のすべての画面で実行したいと考えています。7 インチの画面で実行しようとしましたが、背景画像とスプライトの位置が正しくありません。ゲームをさまざまな画面解像度に対応させる方法の例をいくつか示します。

FillResolutionPolicy()以下のコードを使用しましたが、役に立ちませんでした。以下のコードと一緒に使用すると、さまざまな画面に自動的に設定されることをどこかで見たことがありますandengineが、変更に気付かなかったので、解決してください。

DisplayMetrics メトリック = 新しい DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(メトリックス)
CAMERA_WIDTH = metrics.widthPixels()
CAMERA_HEIGHT = metrics.heightPixels()
4

2 に答える 2

0

FillResolutionPolicy は、画面サイズに応じてすべてを自動的にスケーリングします。

Camera camera = new Camera(0, 0, 480, 880);
EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new FillResolutionPolicy(), this.camera);

これは私が使用しているもので、より大きなデバイスでゲームを開始すると、すべてが自動的にスケーリングされます。
FillResolutionPolicy はおそらくまさにあなたが必要としているものです。

(現在、実際のコードにアクセスできないため、上記のコードは 100% 正確ではない可能性があります)

于 2013-07-09T09:41:10.843 に答える
0

FillResolutionPolicy()画面の縦横比に応じて、左/右または上/下のいずれかの黒いストライプ用です。解決ポリシーについては、andengine フォーラムのこの投稿を参照してください。

カメラの幅/高さは、デバイスの高さまたはデバイスの幅のいずれかに投影されるため、デバイスの実際の解像度とは関係ありません (カメラ設定のアスペクト比とデバイスのアスペクト比によって異なります)。DisplayMetrics が役立つポイントは 1 つだけです。画面密度/最大解像度を取得して、解像度に依存するスプライトをロードします (高密度のように、より大きなスプライトをロードするなど) が、それは問題ではありません。

私がテストしてエンジンとして使用したゲームはすべて解像度に依存せず、追加やコードの変更なしで、さまざまな解像度の 4、7、または 10 インチのディスプレイで実行できます。

シーンにスプライトと背景画像を追加したコーディングミスのようなものだと思います。たとえば、 にCAMERA_WIDTH/_HEIGHT依存するメトリクスとスプライトの位置を再計算するとCAMERA_WIDTH/_HEIGHT、スプライトの位置とデバイスの解像度が混同され、すべてが少し乱れたように見えます。おそらくいくつかのコードを追加してください。私の答えを編集して正しい方向に向けることができます。

于 2013-07-08T14:02:35.627 に答える