1

我正在使用 And Engine 制作游戏,当我尝试以适用于所有设备的通用方式制作游戏时,我遇到了麻烦......

我需要在应该在所有屏幕上工作的背景精灵的特定位置上设置一个精灵......我的背景屏幕的尺寸与设备的尺寸相同......

我尝试使用像素,比如说 Glaxy S3 ha 尺寸720*1280

我根据它在位置(584,608)设置我的精灵

和我的 HTC experia ha 尺寸(320,480)

所以我需要将其设置为(244,172) ....

我已经尝试了以下所有方法来以通用方式设置精灵的位置,但如果任何工作都没有......

我已经尝试了很多以下方法来制作一些让我能够做到但找不到任何公式的公式。请告知

final Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

 metrics.density;
 metrics.densityDpi;
 metrics.heightPixels);
 metrics.scaledDensity);
 metrics.widthPixels);
 metrics.xdpi);
 metrics.ydpi);



Point point = getDisplaySize(display);
 CAMERA_WIDTH = point.x;
 CAMERA_HEIGHT = point.y;
 DisplayMetrics dm = new DisplayMetrics();     getWindowManager().getDefaultDisplay().getMetrics(dm);
 double x = Math.pow(dm.widthPixels/dm.xdpi,2); 
 double y = Math.pow(dm.heightPixels/dm.ydpi,2);
 double screenInches = Math.sqrt(x+y);
 int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));

//CAMERA_WIDTH = display.getWidth();
//CAMERA_HEIGHT = display.getHeight();

问题有点复杂.. 正如我上面所说的,我尝试使用像素,比如说 Glaxy S3 ha *dimensions 720*1280 并且所需的精灵位置是(584,608)所以我以方式设置(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f) *

但是 HTC experia 的尺寸为*320*480 所以根据 (CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f) 所需的位置是 (2599.5,227.27)* 但根据显示这是错误的......当我将它设置为(244,172)对于 experia,它的工作完美。... 请帮忙。

4

1 回答 1

3

AndEngine 提供多种解析策略。它们用于确定 的大小RenderSurfaceView,从而确定屏幕上游戏的实际大小,具体取决于屏幕大小。

您应该使用RatioResolutionPolicy:它将使用尽可能大的尺寸,同时保持宽度和高度之间的恒定比率。通过保持相机的尺寸不变,它显示的所有内容都将按照这个恒定比例进行缩放,该比例在不同的设备上会有所不同。

示例:让CAMERA_WIDTH = 720CAMERA_HEIGHT = 480。如果我们以这种方式创建相机和引擎选项:

this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
EngineOptions options = new EngineOptions(..., new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);

比率为720 / 480 = 1.5。在场景中放置精灵时,使用常量坐标。假设我们把它放在屏幕中间:

Sprite sprite = new Sprite(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2, ...);

所以

  • 在屏幕尺寸为 720x480 的设备上,精灵将放置在 (360, 240) 屏幕坐标处。
  • 在屏幕尺寸为 480x320 的设备上,精灵将放置在 (240, 160) 屏幕坐标处。
  • 在屏幕尺寸为 800x480 的设备上,精灵将放置在 (400, 240) 屏幕坐标处。

等等...

于 2012-12-09T15:37:31.700 回答