我用 Canvas 创建了一个Android游戏,但是在测试时,我发现在分辨率为1920x1080(401 ppi)的手机上设置了诸如飞起或落下等 Action 的速度和距离.但是当我在分辨率为 480 x 854 (196 ppi) 的较小手机上进行测试时,我发现 Sprite 的移动速度要快得多,这会影响游戏玩法。例如。主角 Sprite 跳得比我想要的高很多。
有什么方法可以使所有设备尺寸和类型的速度和距离保持相同?
下面是一些关于我如何实现移动的代码:
Sprite 类。
//class variables
private int GRAVITY_LIMIT = -30;
public int gravity = 0;
//gravity
if(gravity>GRAVITY_LIMIT){
gravity= gravity-2;
}
//fall
y= y-gravity;
绘制 Sprite
canvas.drawBitmap(bmp1, x, y, null);
当onTouch被触发时(Jumping)
bird.gravity=30;
最佳答案
您应该根据世界坐标进行移动。例如,将你的世界设置为 10 米 x 10 米,这样当你跳跃时,你就跳了 1 米。然后,您需要将该世界映射到屏幕像素。
float worldHeight = 10f;
float worldToPixels = screenHeight/worldHeight;
y = bird.y * worldToPixels;
因此,在 500 像素高度的屏幕上,您将跳转 50 像素,而在 1000 像素高度的屏幕上,您将跳转 100 像素。
重力和其他力也需要基于世界,才能在所有设备上发挥作用。
最后,如果您尝试为多种设备制作游戏,最好使用像 libGDX 这样的库。 .有很多有用的类(class),例如 ViewPorts使这更容易。
关于android - 每个设备上的速度和距离都不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28516595/