Размер спрайтов на разных размерах экрана Andengine Android

`Я разрабатываю свою первую игру в Android Adnengine. Это гоночная игра с высоты. Я использовал фон параллакса и несколько автомобилей. Я тестировал его на своем устройстве с меньшей шириной и высотой.

Я поставил автомобили с 32 и высотой 64 в соответствии с шириной и высотой камеры. Он отлично работает с моим размером экрана, но при больших размерах экрана, таких как Galaxy Tab, в игре остается огромное пространство, потому что размеры автомобилей остаются такими же, как я должен использовать их во власти двух.

Как использовать изображения, соответствующие всем размерам экрана? Должен ли я использовать разные изображения в соответствии с размером изображения с разной шириной и высотой камеры? Я уверен, что для этого есть решение.

Я уже модифицировал файл манифеста для поддержки небольших, больших и больших размеров.

  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;
}

Ответ 1

Дело в использовании политики с соотношением разрешений заключается в том, что вы можете спроектировать свою игру до определенного размера, например 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-дюймовом планшете тоже, - это не главное.

Ответ 2

Получить высоту устройства и ширину, а затем алгебраически сделать спрайт в процентах от ширины и высоты экрана.

Надеюсь, что это поможет.

Ответ 3

По моему опыту, я считаю, что лучший способ атаковать эту проблему - иметь дело с двумя основными соотношениями экрана (5: 4, 5: 3), которые популярны на большинстве устройств.

Вы выбираете высокое разрешение для каждого соотношения и позволяете двигателю уменьшаться, если размер экрана устройства меньше.