我正在玩一个游戏,你试图逃离投射物,但它们的速度随着时间的推移而增加。我想出了这个解决方案:
vel += vel*0.01
x_coordinate += vel
一开始它很好,但一段时间后它变得非常快,打破了比赛。有没有其他方法可以让我在一段时间内提高速度,并将其限制在某个水平?
您应该以恒定的速率增加速度。
vel += 0.01
x_coordinate += vel
或者,如果你想在某个点限制速度,一个更好的选择是放慢速度的增长速度。
acc = 0.01
vel += acc
x_coordinate += vel
acc *= 0.9
您需要的是加速:
速度是位置随时间的变化。加速度是速度随时间的变化。
对于恒定的速度,你基本上可以将你的速度添加到你的位置,你将有一个恒定的速度移动:
假设位置和速度是矢量:
pos = vector(0, 0)
vel = vector(1, 1)
pos += vel
如果你有一些加速度,问题仍然很简单。在你改变位置之前,你应该通过加速度来改变速度。
假设位置和加速度,速度是矢量:
pos = vector(0, 0)
vel = vector(1, 1)
acc = vector(1, -1)
vel += acc
pos += vel
现在你有了加速运动。
请参阅:https://en.wikipedia.org/wiki/Euler_method