如何根据加速度和摩擦力计算速度



我正在做一个突破游戏,我希望球在靠近球拍时减速。

我有加速度矢量a和速度矢量v

我将速度更新为:

v += a * delta;

现在如何添加会降低速度的摩擦力?

这取决于您要考虑哪种摩擦。

如果我们谈论的是机械摩擦,则可以将其添加为

v = (a - f) * delta;

其中f是某种摩擦系数。

在其他情况下(如取决于当前速度平方的空气动力学摩擦(,依赖性可能更复杂,例如某个时刻的速度[1]看起来像

v[1] = a * delta - k * v[0]^2 / 2;

其中delta是时间 1 和时间 0 之间的差值。

更新

我想在球靠近球拍时放慢速度,这是空气动力学吗?

我认为这种情况与一些真实的自然环境无关,你可以使用一些人为的减速。例如:

v = a * delta - Math.sign(a) * Math.min(k / d, maxBrake)

哪里

  • k- 一些摩擦系数
  • d- 球和最近球拍之间的距离
  • maxBrake- 限制因素,以便在球刚好靠近球拍时不会将速度降低太多。

这不是唯一的解决方案,而是可能的解决方案。剥猫皮的方法不止一种。

只需将速度乘以摩擦系数:

v *= k;

k 介于 0 和 1 之间,摩擦力越小越小。

最新更新