-3

我正在编写游戏(JAVA),我想添加一些重力。我试图找到一个公式或类似的东西,但有很多不同的方法可以做到这一点。我正在寻找一个可以模拟真实重力并在物体接触地板时产生一些反弹的公式。对不起,我的英语不好。

4

1 回答 1

2

在地球表面附近,所有落体的重力加速度是恒定的(忽略空气阻力)。给定初始位置、初始(垂直)速度和物体下落的时间,该公式xf = x0 + v0*t + (1/2)*g*t^2将为您提供最终位置。是一个常数,在技术上取决于您的海拔高度和其他因素,但在.xfx0v0tg9.81 m/s

要进行反弹,您首先需要进行一些碰撞检测。当您检测到碰撞时,您需要计算垂直于表面的矢量(如果您的表面是水平面则很容易),然后通过该矢量“反射”(某种程度)您的速度矢量(如果法线矢量指向直接向上,即,您正在从平坦的表面反弹,这相当于反转速度v)。请注意,为了实现这一点,您可能应该在反弹后应用一些阻尼:除了反映速度矢量外,您还需要缩小它(取决于它在反弹后的反射方式,这可能涉及减少一个或两个组件)。

要实际模拟这种情况,您可以使用多种技术:预先计算点列表,然后通过它们运行动画,或者您可以使用欧拉法或其他一些数字求积技术(梯形规则)模拟所有这些、龙格库塔等)。

于 2013-02-12T16:19:35.687 回答