当前位置: 首页 > 面试题库 >

Android弹跳球

慕震博
2023-03-14
问题内容

因此,我只是想使屏幕周围的球弹起,该球应由于重力而减慢,并像普通球一样从墙壁反射(弹起)。有人可以给出一些基础知识并且非常简单地实现吗?其他示例似乎有些“过高”,似乎超出了我想要做的事情。我已经试过了:

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’或类似的东西(这是恢复原状的系数)。

希望这就是全部。祝好运!



 类似资料:
  • 提前感谢帮助我创建了一个程序,使多个弹跳球当用户点击屏幕上一个新的球应该出现并在屏幕上移动。但是当我点击屏幕上一个球出现,根本不移动。当另一个点击发生时,以前创建的球立即跳到另一个位置。 这是ball类:用于创建球 这是一个ball组件类:用于创建面板

  • 我正在创建一个弹跳球项目,每次点击鼠标时,都会以随机的速度、随机的大小和随机的位置生成弹跳球,除了一件事,一切都很完美,当球从顶部和左侧撞击墙壁时,它会完全反弹,但是当球撞击窗户的底部和右侧时,它们也会反弹,但不是完全反弹,我的意思是,球在撞击墙壁之前会从窗户的右侧反弹,当球超过窗户的一半时,会从底部反弹。问题是什么,为什么要这样做? 下面是代码:

  • 动画outputBounceBounce UpBounce UpBounce In LeftBounce In RightBounce UpBounce Out DownBounce UpBounce Out LeftBounce Out RightBounce Out Up

  • 描述 (Description) 弹跳动画效果用于在击中后快速向上,向后或远离表面移动元素。 语法 (Syntax) @keyframes bounceOutLeft { 0% { transform: translateX(0); } 20% { opacity: 1; transform: translateX(20px); }

  • 描述 (Description) 弹跳动画效果用于在击中后快速向上,向后或远离表面移动元素。 语法 (Syntax) @keyframes bounceOut { 0% { transform: scale(1); } 25% { transform: scale(.95); } 50% { opacity: 1; tr

  • 在FIPS模式下,PKCS#12格式在加密文件时必须使用兼容的加密和哈希算法。 当我阅读BC-FIPS文档时,它说在批准模式下,它们不支持PKCS#12,因此这意味着我们无法在BC-FIPS批准模式下读取PKCS12密钥库;我们使用BC-FIPS作为加密提供者,还使用PKCS12和JKS格式存储密钥和证书。 BC-FIPS声称-“PKCS12密钥存储支持以下变体: PKCS12-3DES-3DES