我用画布制作了一款Android游戏,但在测试时,我发现飞机升降等动作的速度和距离都是在手机上设定的,分辨率为1920x1080 (401 ppi)。但是当我在一部分辨率为480×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;发布于 2015-02-14 17:44:39
我找到了另一个解决办法。这个很好用。
y= y-(gravity * game.getResources().getDisplayMetrics().density);发布于 2015-02-14 16:00:00
你应该把你的运动建立在世界坐标上。例如,把你的世界设为10米x10米,这样当你跳的时候,你就跳了1米。然后,您需要将该世界映射到屏幕像素。
float worldHeight = 10f;
float worldToPixels = screenHeight/worldHeight;
y = bird.y * worldToPixels;所以,在500 on的高度屏幕上,你会跳50 on,在1000 on的高度屏幕上,你会跳100 on。
重力和其他力也需要建立在世界的基础上,才能在所有的设备上工作。
最后,如果您试图为多个设备制作一个游戏,最好使用像libGDX这样的库。有许多像ViewPorts这样的有用类可以使这更容易。
https://stackoverflow.com/questions/28516595
复制相似问题