球的重力模拟

Kev*_*oss 0 c++ game-physics

我正在实施这个使用重力的游戏,但我不知道如何模拟球的重力.

我有一个计时器,在我"掉落"球后立即开始,我必须设置我的物体球的垂直位置.

相关功能是:

int ball->setVerticalPosition(int Y);
float timer->getTime();
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 8

好的,一般来说,你会用这个等式计算新的位置(pos_y):

t = timer->getTime();
float pos_y = pos_y0 + v_0*t - 4.9 * t *t;
ball->setVerticalPosition(pos_y);
Run Code Online (Sandbox Code Playgroud)

(v_0是初始速度,pos_y0是球的初始坐标).在你的情况下,你说你正在"丢弃"球,所以如果你移除v_0*t可能会更好.并且pos_y0是原始高度(取决于您的坐标系).

不要忘记检查pos_y = 0(你的楼层可能!)

  • 为什么4.9?重力往往是9.8m/s. (3认同)
  • 为了使其更加逼真,您还需要模拟空气阻力,或者只是将速度限制在某个水平(终端速度) (3认同)