gpt4 book ai didi

java - 如何调整关卡加载器使其适用于所有 Android 手机?

转载 作者:行者123 更新时间:2023-12-02 07:00:05 29 4
gpt4 key购买 nike

我正在制作一个游戏(仅使用 eclipse 和 android sdk),并且我有一个基于文本文件输入的关卡构建功能。

例如,“levelone.txt”可能包含“[2,5],[14,7],[10,9]”。当加载此文件时,将创建 3 个平台并将其发送到这些位置。

这在我的测试手机(240x320)上运行良好,但在我 friend 的屏幕更大(720x1280)的手机上尝试时,坐标全部错误,只占据角落的一小部分空间。我怎样才能适应我到目前为止所拥有的,以便它适用于所有 Android 设备,根据屏幕尺寸相应地缩放坐标?

最佳答案

缩放关卡加载器背后的数学原理实际上相当简单。首先,您应该从选择默认比例开始。这意味着采用 240x320 屏幕分辨率以及平台的坐标和尺寸

现在为了缩放它,我们应该知道运行游戏的设备的屏幕分辨率。以下将为您抓取屏幕分辨率:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果您的目标是 API 13 之前的版本,则不能使用 display.getSize,而应该使用:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

现在我们有了新的分辨率,我们可以发现默认 (240x320) 分辨率与新设备上的分辨率之间的比例差异:

float xScale = (float)width / 240.0f;
float yScale = (float)height / 320.0f;

强制这些值成为 float 或 double 非常重要,因为如果将它们保留为整数,则它将无法正确缩放,因为小数值将被省略,并且您将得到一个四舍五入的整数数字。这是不准确的,并且不允许正确缩放。

一旦获得了比例,您就可以开始相应地调整对象的大小并移动对象。

例如,如果您的第一个平台的位置是

int x = 200;
int y = 120;

那么您只需将这些值乘以比例即可:

int x = (int)(200 * xScale);
int y = (int)(120 * yScale);

您还需要对平台的尺寸执行此操作:

int width = (int)(30 * xScale);
int height = (int)(15 * yScale);

用平台的宽度和高度替换 30 和 15

重要:当以这种方式缩放坐标时,您需要缩放所有坐标。这意味着如果您使用坐标来检测边界和碰撞,这些坐标也必须相应地缩放以匹配。

这是关于如何获取 Android 设备分辨率的另一篇文章。

Getting screen resolution

希望这有帮助,祝你好运。

关于java - 如何调整关卡加载器使其适用于所有 Android 手机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16764616/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com