gpt4 book ai didi

java - 安卓弹跳球

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:38 24 4
gpt4 key购买 nike

所以我只是想让一个球在屏幕上弹跳,它应该由于重力而减速并像普通球一样从墙上反射(弹跳)。有人可以提供一些基础知识和非常简单的实现吗?其他例子似乎有点“过头了”,似乎超出了我想做的范围。我试过这个:

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 值来自加速度计。任何帮助将不胜感激,谢谢!

最佳答案

我认为为此您需要 3 样东西,力(您拥有的 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/

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