Java 我怎样才能使一个有弹性的身体从另一个身体上弹得更低?

Java 我怎样才能使一个有弹性的身体从另一个身体上弹得更低?,java,libgdx,box2d,Java,Libgdx,Box2d,我正在用libGDX中的Box2D制作一个游戏。我在屏幕周围设置了一个“墙”对象,它是一个静态的链状体,一些“球”是动态的圆形体和负重力。球应该是非常有弹性的,所以我给它们设置了一个大的1.1f恢复,但是墙不应该,即使我将墙的恢复设置为零,球也会反弹得太高。我需要像设置负恢复到墙上这样的东西,这样球会弹得更高,彼此之间弹得更低。有什么想法吗?您可以使用两个变量来存储两个轴的运动方向。 例如: double xDirection,yddirection 然后在更新方法中,可以将其添加到对象的当前位

我正在用libGDX中的Box2D制作一个游戏。我在屏幕周围设置了一个“墙”对象,它是一个静态的
链状体,一些“球”是动态的
圆形体和负重力。球应该是非常有弹性的,所以我给它们设置了一个大的
1.1f
恢复,但是墙不应该,即使我将墙的恢复设置为零,球也会反弹得太高。我需要像设置负恢复到墙上这样的东西,这样球会弹得更高,彼此之间弹得更低。有什么想法吗?

您可以使用两个变量来存储两个轴的运动方向。 例如:

double xDirection,yddirection

然后在更新方法中,可以将其添加到对象的当前位置。 现在,如果你想让它从曲面上反弹,你可以将它的值乘以-1。这将反转对象的方向。 例如,假设一个球在x轴上以2个单位的速度移动。 当球击中边缘时,xDirection将乘以-1。现在xDirection是-2。因此,球的方向是相反的。
但是,这将使球以相同的速度反弹。为了解决这个问题,你可以将xDirection乘以0.5。现在如果我们将球的xDirection乘以0.5,xDirection将是-1。因此,球移动得较慢。使用相同的概念,可以通过乘以1.5(而不是0.5)使球移动得更快。而且,您也可以使用yDirection来完成此操作。

谢谢您的回答。据我所知,我应该在触发碰撞事件时手动编辑球的线速度,而使用Box2D功能无法解决这个问题?不过,在你的回答中没有任何与Box2D相关的内容。对不起,用户3762140,我对Box2D没有什么经验,但当你说bounce时,我想到了这一点。你有没有根据碰撞的身体,尝试过在preSolve回调中调整球的恢复?@noone yep,我尝试过这个。但并非每次球撞到墙上都有效。现在我试着测量碰撞后球的线速度,这很有帮助。但我仍然认为有更好的解决办法。