每台设备的速度和距离都不相同

时间:2015-02-14 14:29:18

标签: android sprite android-canvas

我使用画布创建了一款Android游戏,但在测试时,我发现在分辨率为1920x1080(401 ppi)的手机上设置了飞行或跌落等动作的速度和距离。 。但是当我在分辨率为480 x 854(196 ppi)的小型手机上进行测试时,我发现我精灵的移动速度要快得多,影响了游戏性。例如。主角精灵的跳跃比我想要的要高很多。

有没有办法在所有设备尺寸和类型上保持速度和距离相同?

以下是关于我如何实施运动的一些代码:

精灵课。

//class variables
private int GRAVITY_LIMIT = -30;
public int gravity = 0;

//gravity
if(gravity>GRAVITY_LIMIT){
   gravity= gravity-2;
}
//fall
y= y-gravity;

绘制精灵

canvas.drawBitmap(bmp1, x, y, null);

触发onTouch时(跳跃)

bird.gravity=30;

2 个答案:

答案 0 :(得分:1)

您应该围绕世界坐标进行移动。例如,将你的世界设置为10米x 10米,这样当你跳跃时,你会跳1米。然后,您需要将该世界映射到屏幕像素。

float worldHeight = 10f;
float worldToPixels = screenHeight/worldHeight;

y = bird.y * worldToPixels;

因此,在500px高度屏幕上,你会跳50px,在1000px高度屏幕上你会跳100px。

重力和其他力量需要以世界为基础,以便在所有设备上运行。

最后,如果您尝试为多个设备制作游戏,最好使用像libGDX这样的库。有许多有用的课程,如ViewPorts,可以让您更轻松。

答案 1 :(得分:0)

我找到了另一个解决方案。 这个很好用。

 y= y-(gravity * game.getResources().getDisplayMetrics().density);