gpt4 book ai didi

Android加速物体的障碍检测

转载 作者:行者123 更新时间:2023-11-29 00:23:04 33 4
gpt4 key购买 nike

我的应用程序包含一个在表面 View 上移动的对象。我可以通过加速度计移动它。这是玩家对象的移动代码:

if(x + mx*speed > 0 && x + mx*speed < GameView.WIDTH) {
x += mx*speed;
}
if(y+ my*speed > 0 && y+ my*speed < GameView.HEIGHT) {
y+=my*speed;
}

x和y是玩家的坐标

mx 是玩家从加速度计得到的值,例如:当向左倾斜时,mx 为-2,当倾斜更多时,mx 为-4、-5、-6 等 --> 我的是y轴相同

当我想要更快的运动时,速度是一个可以修改和玩弄的变量。

如您所见,我试图将移动限制为仅当玩家在 View 内时移动。

现在我的问题是:当向右强烈倾斜设备时,mx 变成类似 6 的值。速度设置为 5。这意味着,当玩家的位置 + 6 * 5 大于游戏 View 时,它不应该再动。但这会导致播放器停止在 View 右侧前面的像素......当轻轻向右倾斜时,对象会完美地停在 View 的边界......

现在我应该如何更改代码来实现一个在屏幕边界处完美停止移动的对象?

Image with intensively use of accelerometer

在这张图片上,您可以看到圆圈并没有完全停在底部,因为圆圈和底部边框之间有一些像素。当使用加速度计稍微向后移动时,圆圈会与屏幕底部对齐:

bottom of the screen

但现在,i 只能在缓慢移动时到达屏幕边界,这意味着 mx 或 my 较低。

截图可以看到mY值。在第一张图片上,我的 = ca。 8 和第二个约。 6.

有什么想法吗?

提前致谢

最佳答案

尝试像这样将值限制在边框上

x = Math.max(Math.min(x + mx*speed, GameView.WIDTH), 0.0f));
y = Math.max(Math.min(y + my*speed, GameView.HEIGHT, 0.0f));

关于Android加速物体的障碍检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21760961/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com