我已经为此尝试了典型的物理方程,但它们都没有真正起作用,因为方程处理恒定加速度,而我的需要改变才能正常工作。基本上,我有一辆可以在很大范围内行驶的汽车,当它到达路径的尽头时,需要在给定的距离和时间内减速和停车。
所以,我有:
V0
,或者当前速度
Vf
,或者我想要达到的速度(通常为 0)
t
,或者我想要到达路径尽头的时间
d
,或者当我改变时我想要走的距离从 V0 到 Vf
我想计算
a
,或者从 V0 到 Vf 所需的加速度
这成为特定于编程的问题的原因是因为a
随着汽车不断停止,需要在每个时间步重新计算。因此,V0
不断更改为V0
从上一个时间步开始plus
计算a
上一个时间步。所以本质上它会开始慢慢停止,然后最终会更突然地停止,有点像现实生活中的汽车。
编辑:
好的,感谢您的出色回应。我需要的很多东西只是思考这个问题的一些帮助。现在让我更具体一些,因为我从你们那里得到了更多的想法:
c
我有一辆车64 pixels
从目的地出发,所以d=64
。它正在行驶2 pixels per timestep
,在哪里timestep is 1/60 of a second
。我想找到它的加速度,让它在它经过时a
达到 100 的速度。0.2 pixels per timestep
d
d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)
同样因为这发生在游戏循环中,所以delta
每个动作都会传递一个变量,即multiple of 1/60s that the last timestep took
. 换句话说,如果花费了 1/60s,delta
则为 1.0,如果花费了 1/30s,delta
则为 0.5。在实际应用加速度之前,它乘以这个增量值。同样,在汽车再次移动之前,它的速度乘以 delta 值。这是非常标准的东西,但它可能是导致我的计算出现问题的原因。