几乎每个游戏都倾向于使用一些游戏循环。Gafferongames 有一篇关于如何制作精心设计的游戏循环的精彩文章:http: //gafferongames.com/game-physics/fix-your-timestep/
在他的代码中,他使用integrate( state, t, deltaTime );
,我认为state
其中包含对象的位置、速度和加速度。他使用 RK4 将其从 集成t
到t+deltaTime
。
我的问题是,当您可以使用运动学方程(此处)找到精确值时,为什么要使用像 RK4 这样的数值积分技术?
这些方程在加速度恒定时起作用。您似乎很少会在一个时间步长内获得不断变化的加速度。看起来 RK4 是一种性能较低、精度较低、更复杂的解决方案。
编辑:如果你真的想的话,我认为你可以为对象添加一个“jerk”值,并且仍然可以找到加速度、速度和位移的精确表达式。
编辑2:好吧,我没有仔细阅读他的“集成基础”文章。我认为他正在模拟一个阻尼器和弹簧,这确实会在一个时间步内导致非恒定加速度。