首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速度和距离在每个设备上并不相同

速度和距离在每个设备上并不相同
EN

Stack Overflow用户
提问于 2015-02-14 14:29:18
回答 2查看 103关注 0票数 1

我用画布制作了一款Android游戏,但在测试时,我发现飞机升降等动作的速度和距离都是在手机上设定的,分辨率为1920x1080 (401 ppi)。但是当我在一部分辨率为480×854 (196 ppi)的小型手机上测试时,我发现我的精灵的移动速度要快得多,这影响了游戏的播放。主角精灵跳得比我想的要高得多。

有没有办法使所有设备的大小和类型保持相同的速度和距离?

下面是一些关于我如何实现这一运动的代码:

雪碧班。

代码语言:javascript
复制
//class variables
private int GRAVITY_LIMIT = -30;
public int gravity = 0;

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

画精灵

代码语言:javascript
复制
canvas.drawBitmap(bmp1, x, y, null);

当onTouch被触发时(跳跃)

代码语言:javascript
复制
bird.gravity=30;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-14 17:44:39

我找到了另一个解决办法。这个很好用。

代码语言:javascript
复制
 y= y-(gravity * game.getResources().getDisplayMetrics().density);
票数 0
EN

Stack Overflow用户

发布于 2015-02-14 16:00:00

你应该把你的运动建立在世界坐标上。例如,把你的世界设为10米x10米,这样当你跳的时候,你就跳了1米。然后,您需要将该世界映射到屏幕像素。

代码语言:javascript
复制
float worldHeight = 10f;
float worldToPixels = screenHeight/worldHeight;

y = bird.y * worldToPixels;

所以,在500 on的高度屏幕上,你会跳50 on,在1000 on的高度屏幕上,你会跳100 on。

重力和其他力也需要建立在世界的基础上,才能在所有的设备上工作。

最后,如果您试图为多个设备制作一个游戏,最好使用像libGDX这样的库。有许多像ViewPorts这样的有用类可以使这更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28516595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档