我在3D中制作了一个相机类,它朝向一个点关闭,减速并缓和到停止状态。定期这样做非常简单:
// positions are vectors, dampening is a scalar, usually set to ~0.9
currentPosition += (targetPosition - currentPosition) * dampening;
然而,这被锁定到帧速率,假设它每帧只执行一次。
如何最好地实现这种依赖于时间而不是帧速率或执行时间的行为?
答案 0 :(得分:0)
一个简短的实验(如果你需要一点感应)表明你在 n 帧之后
targetPosition*(1 - (1 - dampening)^n) + currentPosition*(1 - dampening)^n
所以为了使这个时间相关,写
targetPosition*(1 - pow(1 - dampening, t)) + currentPosition*pow(1 - dampening, t)
现在每单位时间有一个阻尼,时间甚至可能是分数。
您的问题让我想起了Calculate speed by distance and friction。