如何使用andengine运行我的游戏以获得不同的屏幕分辨率

时间:2011-09-24 07:54:50

标签: android andengine

我正在使用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 个答案:

答案 0 :(得分:5)

如果您愿意,可以像现在一样使用固定相机。 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对您的精灵进行相应缩放。

答案 1 :(得分:4)

Andengine游戏将在本地扩展到设备 - 所以......

如果您将CAMERA_WIDTH / HEIGHT设置为480x320并且有人在800x480的手机上运行它,您的游戏将扩大到720x480(1.5x)并且将有80px的边距(顶部,底部,左侧,右侧)或根据您的视图的重力在它们之间分开。

你必须决定使用你的应用程序的大多数人会使用什么 - 我倾向于以800x480为目标,并且在缩小屏幕时会有一些缩小 - 而不是相反......

答案 2 :(得分:1)

您可以使用此来源:

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

答案 3 :(得分:1)

默认情况下,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);