这是第一个版本,我的增量为1/60:http://jsfiddle.net/ocdrd0uy/
这是第二个版本,我更改的唯一事项是增量到1/20:http://jsfiddle.net/ocdrd0uy/1/
var delta = 1 / 60; --> var delta = 1 / 20;
我只是这样的时间步:
x = x + v * dt * 0.5
v = v + (F * 1/m) * dt
x = x + v * dt * 0.5
为什么玩家移动速度越快,增量越高?
答案 0 :(得分:0)
当你的delta减少时,速度会增加,这是合乎逻辑的
在进行2个半步积分后,清除力
所以,既然你没有在其他地方再次设置它,你正在做的是在第一个刻度线上delta
期间施加力(改变速度),然后不再施加力。
因此,首先滴答后的速度会根据增量变化,然后速度保持在该水平。
要纠正这一点,我必须知道你想要建模的东西
如果您试图模拟由于在非常短的时间内施加的力而产生的初始“冲击”,只需在F
期间将punchDuration
应用于速度 - 这与设置初始化非常相似速度-。