【发布时间】:2015-01-06 01:58:46
【问题描述】:
我正在编写一个模拟,其中一个对象在 2D 世界中向目标位置移动,存储为矢量target(x,y)。对象位置也存储为位置向量pos(x,y)。该对象包含另外两个向量,所需的移动速度dv(x,y),以及当前的移动速度cv(x,y)。在模拟开始时,这两个速度矢量都是初始的,即设置为(0,0)。
当物体应该向目标位置移动时,我计算所需的速度矢量dv,对其进行归一化,并按移动速度值对其进行缩放:
dv.set(target).sub(pos).normalize()
dv.scale(speed)
我想让运动看起来更逼真,这就是我使用两个速度矢量的原因。 dv 告诉我要移动对象的全速,cv 保存对象当前移动的真实速度。
然后在每一帧(更新步骤),当前速度cv 是根据所需速度dv 和加速度值acc 设置的。这是通过简单地计算cv 和dv 之间的差异并将此差异限制为acc 来完成的。这样,物体开始缓慢移动并逐渐加速,最终达到全速。
到目前为止,这一切正常。现在我也想使用acc 进行减速。当pos 和target 之间的距离为一定值时,应将所需速度dv 设置为(0,0),以便物体逐渐减速,直到在目标位置完全停止。
我的问题是:如何计算我需要将dv 设置为(0,0) 的距离(即告诉系统停止运动),以便对象正确减速以停止准确 在目标位置?
【问题讨论】:
标签: algorithm kinematics