我正在使用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(使用相同的建筑图像大小)运行不同屏幕分辨率的游戏。
否则我需要更改所有屏幕分辨率的建筑图像?
答案 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);