不同屏幕尺寸下的精灵尺寸问题:Andengine Android

11

我正在开发我的第一个Android Adnengine游戏。它是一款俯视角的赛车游戏,我使用了视差背景和一些汽车。我在我的设备上进行了测试,该设备的宽度和高度较小。

我根据相机的宽度和高度将汽车的宽度设置为32,高度设置为64。它在我的屏幕大小上工作正常,但在大屏幕尺寸上(例如Galaxy Tab),游戏中会留下巨大的空间,因为汽车的大小仍然保持相同,而我必须使用它们的2次幂。

我该如何使用适合所有屏幕大小的图像?我是否需要根据不同相机宽度和高度的图像大小使用不同的图像?我相信这个问题有解决办法。

我已经修改了我的清单文件以支持小型、大型和xlarge尺寸。

  public Engine onLoadEngine() {

    final Display display = getWindowManager().getDefaultDisplay();
    CAMERA_WIDTH = display.getWidth();
    CAMERA_HEIGHT = display.getHeight();

    //Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3);

    mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    engine = new Engine(new EngineOptions(true,
            ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
                    CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
            true).setNeedsSound(true));

    return engine;
}

如果您在初始化引擎时使用RatioResolutionPolicy,它将为您处理。 - jmroyalty
我刚刚编辑了我的问题并附上了代码,你能再帮我一下吗?我正在使用RatioResolutionPolicy。 - sheraz amin
3个回答

14

使用比例分辨率策略的好处在于可以将游戏设计为特定大小,例如800x480,这对手机来说非常流行。

我认为大多数人走错的地方是认为他们需要获取当前显示器的宽度/高度并使用它来初始化引擎。

我理解比例分辨率策略的重点在于设置硬编码值的尺寸,让比例分辨率策略处理不同设备之间的差异。

CAMERA_WIDTH = 800;
CAMERA_HEIGHT = 480;

//Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3);

mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
engine = new Engine(new EngineOptions(true,
        ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
                CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
        true).setNeedsSound(true));
一旦你完成了这些步骤,你只需要确保你的图形和间距在预先选择的宽度/高度下看起来不错 - 在这个例子中是800 x 480。如果一切正常并且适配良好,那么比例分辨率策略将在设备有不同屏幕尺寸时处理好一切。
至少这是我的看法 - 我为800 x 480编写,并且在我的7英寸平板电脑上一切看起来也很好 - 尽管这并不是一个很大的挑战。

我为游戏场景测试了一个高分辨率背景图(1240x840),使用800x480的相机拍摄,结果发现背景被裁剪了。所以我不明白为什么它对你来说可以正常运作!!!! - Ashraf Sayied-Ahmad
所以反过来思考 - 使用 1240x840 的相机编写更高分辨率的代码,让 AndEngine 处理较小的设备。就像我说的,我为 800x480 编写代码,但我的平板电脑只有 1280x800。 - jmroyalty
根据我的观点,使用分辨率为1024x600的相机。它在小型和高分辨率设备上表现良好。 - Siddharth
比例分辨率策略很好,但在开发以像素艺术为基础的游戏时,我发现它并不是很有帮助,因为通常你想要将艺术像素的大小与显示器的大小匹配。比例分辨率策略倾向于调整非整数大小,这会导致放大/缩小的伪影。 - thalador
肖像模式下最佳高度和宽度是多少? - rasen58
+1给答案。您还可以使用不同的分辨率策略,因为Ratio RP有一些缺点。请查看我的带有插图的文章:http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html - MartinTeeVarga

3

获取设备的高度和宽度,然后通过代数运算,将精灵的大小设置为屏幕宽度和高度的百分比。

希望对您有所帮助。


到目前为止,我也只找到了这个解决方案。 - sheraz amin

0
根据我的经验,我认为攻克这个问题的最佳方式是处理两种主要的屏幕比例(5:4、5:3),这些比例在大多数设备中都很流行。
你可以为每个比例选择高分辨率,并让引擎在设备屏幕尺寸较小时进行缩放。

摄像头的尺寸应该与屏幕尺寸相同。 - Ashraf Sayied-Ahmad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接