所以我只是想让一个球在屏幕周围弹跳,它应该由于重力而减慢并像普通球一样从墙上反射(弹跳)。
有人可以提供一些基础知识和非常简单的实现吗?
其他示例似乎有点“过头”,似乎超出了我想做的范围。
我试过这个:
public void updateLogic() {
if (x < -1) {
xPos += (-x * gravity);
} else if (x > 1) {
xPos -= (x * gravity);
}
if (y > 1) {
yPos += (y * gravity);
} else if (y < -1) {
yPos -= (-y * gravity);
}
}
这是我自己离得最近的一次。
顺便说一下,x 和 y 值来自加速度计。
任何帮助将不胜感激,谢谢!
最佳答案
我认为你需要三样东西,力(x 和 y,你有),速度(称它们为 xVel 和 yVel)和位置(xPos 和 yPos,你也有)。球的位置通过以下方式更新(以最简单的方式):
xPos += dt*xVel;
yPos += dt*yVel;
xVel += dt*x;
yVel += dt*y;
变量“dt”是时间步长,它控制球移动的速度。但是,如果设置太大,程序将不稳定!尝试 dt = 0.001 左右开始并逐渐将其设置得更高。
然后,为了让球从墙壁反射,如果它撞到墙壁,只需翻转速度:
if (xPos > xMax) {
xPos = xMax;
xVel *= -1.0;
} else if (xPos < 0.0) {
xPos = 0.0;
xVel *= -1.0;
}
和 y 相同。 'xPos = ...' 只是为了阻止球离开屏幕边缘。如果您希望球每次撞到墙壁时反弹得少一点,请将“-1.0”更改为“-0.9”或其他值(这是 coefficient of restitution )。
希望这就是全部。祝你好运!
关于java - 安卓弹跳球,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4513902/