首页 > 解决方案 > 如何根据加速度和摩擦计算速度

问题描述

我正在制作一个突破游戏,我希望球在靠近球拍时放慢速度。

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

我将速度更新为:

v += a * delta;

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

标签: javascriptgame-physics

解决方案


这取决于您要考虑的摩擦类型。

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

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- 限制因素,以便在球就在桨附近时不会过多地降低速度。

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


推荐阅读