LERP-线性插值
几天前,我针对类似问题给出了此答案,但现在我们开始:
线性插值是一项根据进度为您提供两个数字之间的数字的功能。您实际上可以在两点之间得到一个点。
伟大的公式-如何计算
一般的LERP公式由给出pu = p0 + (p1 - p0) * u
。哪里:
- pu:结果数
- p0:初始编号
- p1:最终数字
- u:进度。它以0到1之间的百分比表示。
如何获得百分比
您可能想知道,“我怎么能得到这个百分比!?”。不用担心 就像这样:起始矢量完成需要花费多少时间?好的,将其除以已经过去的时间。这将给您百分比。
看,像这样: percentage = currentTime / finalTime;
计算向量
要获得结果矢量,您需要做的是两次应用公式,一次用于X分量,一次用于Y分量。像这样:
point.x = start.x + (final.x - start.x) * progress;
point.y = start.y + (final.y - start.y) * progress;
计算变量时间
您可能希望点数以0.5点的速度行驶,是吗?因此,假设更长的距离将经过更长的时间。
您可以按照以下步骤进行操作:
我希望你知道向量数学。否则,您可以通过此公式计算向量长度d = sqrt(pow(v.x, 2) + pow(v.y, 2));
。
做完了
注意:也许这不是您想要的速度,但这是正确的。这样您就可以进行线性运动,即使是对角运动。如果您想做x + = 0.5f,y + = 0.5f,请阅读向量数学书并重新检查您的计划。
goal_dist
是您的if
状况吗?