11

`私はAndroidAdnengineで最初のゲームを開発しています。上面から見たレーシングゲームです。視差の背景といくつかの車を使用しました。幅と高さが小さいデバイスでテストしました。

カメラの幅、高さに合わせて32、高さ64の車を配置しました。私の画面サイズでは問題なく動作しますが、Galaxy Tabのような大きな画面サイズでは、車のサイズが2の累乗で使用する必要があるのと同じままであるため、ゲームに大きなスペースが残ります。

すべての画面サイズに合う画像を使用するにはどうすればよいですか?カメラの幅と高さが異なる画像サイズに応じて、異なる画像を使用する必要がありますか?私はこれに対する解決策があると確信しています。

私はすでにマニフェストファイルを変更して、小さいサイズ、大きいサイズ、およびx大きいサイズをサポートしています。

  public Engine onLoadEngine() {

    final Display display = getWindowManager().getDefaultDisplay();
    CAMERA_WIDTH = display.getWidth();
    CAMERA_HEIGHT = display.getHeight();

    //Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3);

    mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    engine = new Engine(new EngineOptions(true,
            ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
                    CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
            true).setNeedsSound(true));

    return engine;
}
4

3 に答える 3

14

比率解像度ポリシーを使用することの利点は、ゲームを特定のサイズ (たとえば、最近の携帯電話で非常に人気のある 800x480) に設計できることです。

ほとんどの人は、現在のディスプレイの幅/高さを取得し、それを使用してエンジンを初期化する必要があると考えていると思います。

比率解決ポリシーのポイントは、私が理解しているように、ディメンションをハードコードされた値に設定し、比率解決ポリシーでデバイスごとの違いを処理できるようにすることです。

CAMERA_WIDTH = 800;
CAMERA_HEIGHT = 480;

//Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3);

mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
engine = new Engine(new EngineOptions(true,
        ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
                CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
        true).setNeedsSound(true));

このようなことをしたら、グラフィックスと間隔が事前に選択した幅/高さ (この例では 800 x 480) で適切に見えることを確認するだけで済みます。デバイスの画面サイズが異なる場合は注意してください。

少なくとも、それがどのように機能するかについての私の見解は - 私は 800 x 480 で書いており、すべてが私の 7 インチ タブレットでも問題なく表示されます - ただし、それは大した問題ではありません。

于 2012-07-10T11:23:30.873 に答える
3

デバイスの高さと幅を取得し、代数的にスプライトを画面の幅と高さのパーセンテージにします。

それが役立つことを願っています。

于 2012-07-09T16:18:02.913 に答える
0

私の経験によると、この問題に対処する最善の方法は、ほとんどのデバイスで一般的な 2 つの主要な画面比率 (5:4、5:3) に対処することだと思います。

各比率に高解像度を選択し、デバイスの画面サイズが小さい場合はエンジンを縮小します。

于 2013-04-10T20:42:12.920 に答える