我正在使用And Engine制作一款游戏,当我尝试以通用方式制作游戏时,它可以在所有设备上运行,然后我遇到了麻烦......
我需要在背景精灵的特定位置设置精灵,它应该适用于所有屏幕......我的背景屏幕与设备尺寸相同。
我尝试使用像素让我们说Glaxy S3 ha尺寸 720 * 1280
我根据它设置我的精灵(584,608)
和我的HTC体验(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 *尺寸720 * 1280并且所需的精灵位置是(584,608) 所以我设置方式(CAMERA_WIDTH / 1.233f,CAMERA_HEIGHT / 2.112f)*
但是HTC体验的尺寸 * 320 * 480所以根据(CAMERA_WIDTH / 1.233f,CAMERA_HEIGHT / 2.112f)所需的位置是(2599.5,227.27)* 但根据展示错误... 当我把它设置在(244,172)以便体验它的完美工作时。 ...请帮忙。
答案 0 :(得分:3)
AndEngine提供多种解决方案政策。它们用于确定RenderSurfaceView
的大小,从而决定屏幕上游戏的实际大小,具体取决于屏幕大小。
您应该使用RatioResolutionPolicy
:它将使用尽可能大的尺寸,同时保持宽度和高度之间的恒定比率。通过保持相机的大小不变,它显示的所有内容都将按照这个恒定的比例进行缩放,这个比例会因不同的设备而异。
示例:设CAMERA_WIDTH = 720
和CAMERA_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, ...);
<强>因此强>:
等等......