Как запустить мою игру для другого разрешения экрана с помощью andengine - PullRequest
5 голосов
/ 24 сентября 2011

Я разрабатываю игру, используя andeninge.Я установил ширину и высоту камеры

private static final int CAMERA_WIDTH = 480;
private static final int CAMERA_HEIGHT = 320;

@Override
public Engine onLoadEngine(){    
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    final Engine engine = new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new  FillResolutionPolicy(), this.mCamera).setNeedsSound(true));     
    return engine;
}

В игре изображение размера здания (1020x400).Вид здания правильно, когда camera_widhth и camera_height 480, 320.Как запустить мою игру для другого разрешения экрана, используя andengine (Используя тот же размер изображения здания).

В противном случае мне нужно изменить изображения здания для всех разрешений экрана?

Ответы [ 4 ]

5 голосов
/ 24 сентября 2011

Вы можете использовать фиксированную камеру, как и сейчас, если хотите. OpenGL ES масштабирует вид, чтобы заполнить экран устройства. Это, вероятно, самое простое решение, но оно либо изменит соотношение сторон, либо оставит черные ящики ниже / выше или слева / справа от экрана, когда игра запускается на устройстве с соотношением сторон, отличным от 1,5 (480/320). Я думаю, что в настоящее время большинство устройств имеют соотношение сторон 1,66 (800/480).

Другой вариант использования:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics)
CAMERA_WIDTH = metrics.widthPixels()
CAMERA_HEIGHT = metrics.heightPixels()

, чтобы установить размер камеры, а затем использовать комбинацию размеров пикселей и плотности пикселей на экране (dpi) (см. http://developer.android.com/reference/android/util/DisplayMetrics.html) и использовать .setScale для ваших спрайтов, чтобы соответствующим образом масштабировать их.

4 голосов
/ 03 октября 2011

Игры Andengine будут изначально масштабироваться на устройстве - так что ...

Если вы установите CAMERA_WIDTH / HEIGHT равным 480x320, и кто-то запустит его на телефоне размером 800x480, ваша игра будет масштабирована до 720x480(В 1,5 раза), и в зависимости от степени тяжести вашего просмотра будет поле в 80 пикселей (сверху, снизу, слева, справа или разделено между ними). ​​

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

1 голос
/ 10 февраля 2015

AndEngine по умолчанию предполагает, что вам нужна политика фиксированного разрешения. Но вы также можете изменить его, как указано в следующей ссылке,

http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html

Или вы можете следовать этому коду и соответствующим образом изменить свой код. (Мои предпочтения)

// Calculate the aspect ratio ofthe device.
float aspectRatio = (float) displayMetrics.widthPixels / (float) displayMetrics.heightPixels;

// Multiply the aspect ratio by the fixed height.
float cameraWidth = Math.round(aspectRatio * CAMERA_HEIGHT);

// Create the camera using those values.
this.mCamera = new Camera(0, 0, cameraWidth, cameraHeight);

// Pick some value for your height.
float cameraHeight = 320;

// Get the display metrics object.
final DisplayMetrics displayMetrics = new DisplayMetrics();

// Populate it with data about your display.
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
1 голос
/ 02 апреля 2013

Вы можете использовать этот источник:

@Override
public Engine onLoadEngine() {
     final Display defaultDisplay = getWindow().getWindowManager().getDefaultDisplay();
     CAMERA_WIDTH = defaultDisplay.getWidth();
     CAMERA_HEIGHT = defaultDisplay.getHeight();
     this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
     return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
 }
...