Android:Andengine设置精灵位置,可在所有设备上运行
我正在使用和引擎制作一个游戏,当我试图以通用的方式在所有设备上运行时,我遇到了麻烦 我需要在背景精灵的特定位置设置一个精灵,它应该可以在所有屏幕上工作。。。我的背景屏幕的大小与设备的尺寸相同 我尝试使用像素,比如Glaxy S3 ha尺寸720*1280 我根据它在位置(584608) 以及我的HTC experia ha维度(320480) 所以我需要将其设置为(244172) 我已经尝试了以下所有方法来设置精灵的位置,但如果有任何工作 我已经尝试了以下许多方法来制作一些公式,使我能够做到这一点,但找不到任何。。请告知Android:Andengine设置精灵位置,可在所有设备上运行,android,andengine,dimension,Android,Andengine,Dimension,我正在使用和引擎制作一个游戏,当我试图以通用的方式在所有设备上运行时,我遇到了麻烦 我需要在背景精灵的特定位置设置一个精灵,它应该可以在所有屏幕上工作。。。我的背景屏幕的大小与设备的尺寸相同 我尝试使用像素,比如Glaxy S3 ha尺寸720*1280 我根据它在位置(584608) 以及我的HTC experia ha维度(320480) 所以我需要将其设置为(244172) 我已经尝试了以下所有方法来设置精灵的位置,但如果有任何工作 我已经尝试了以下许多方法来制作一些公式,使我能够做到这一
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,所需的精灵位置是(584608)
所以我设置了一种方式(摄像头宽度/1.233f,摄像头高度/2.112f)*
但HTC experia具有尺寸*320*480,因此根据(摄像头宽度/1.233f,摄像头高度/2.112f)所需的位置为(2599.5227.27)*
但根据显示,这是错误的。。。
当我为experia将其设置为(244172)时,它的工作状态非常完美。。。。请提供帮助。并且Engine提供多种解决策略。它们用于确定
RenderSurfaceView
的大小,从而根据屏幕大小确定游戏在屏幕上的实际大小
您应该使用比率解决方案策略
:它将使用尽可能大的大小,同时保持宽度和高度之间的恒定比率。通过保持相机的大小不变,它显示的所有内容都将按此恒定比例缩放,该比例在不同的设备上会有所不同
示例:让CAMERA\u WIDTH=720
和CAMERA\u 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的设备上,精灵将放置在(360240)屏幕坐标处
- 在屏幕尺寸为480x320的设备上,精灵将放置在(240160)屏幕坐标处
- 在屏幕尺寸为800x480的设备上,精灵将放置在(400240)屏幕坐标处
等等…谢谢你的评论,但我的问题有点复杂。。正如我所说,我尝试使用像素,比如说Glaxy S3 ha尺寸为720*1280,所需的精灵位置为(584608),因此我设置了方式(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f),但HTC experia的尺寸为320*480,因此所需的位置(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)为(2599.5227.27)但根据显示,这是错误的。。。当我为experia设置(244172)时,它的工作状态非常完美。。。。请帮助..您好,我怀疑我使用的是比率分辨率策略,在我的基本游戏活动中,我覆盖了onsetContent视图,但在此之后,边距仅出现在一侧,如何解决此问题?这是我的堆栈问题的链接