我使用画布创建了一款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;
答案 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);