【发布时间】:2016-03-17 09:43:11
【问题描述】:
【问题讨论】:
-
这正是 Lerp 是什么。您所做的只是描述 Lerp 命令。 a 和 b 之间的一个点就是 Lerp(a,b, .5f) ......那个点在中间。如果你想要十步,那就是 Lerp(a,b, .1f), Lerp(a,b, .2f), Lerp(a,b, .3f) 等等。
【问题讨论】:
Vector3[] GetPointsInbetween(Vector3 a, Vector3 b, float offset){
int count = (int)((b - a).magnitude / offset);
Vector3[] result = new Vector3[count];
Vector3 delta = (b - a).normalized * offset;
for (int i = 0; i < count; i++) {
result[i] = a + delta * i;
Debug.Log(result[i]);
}
return result;
}
但是.magnitude和.normalized是非常昂贵的操作,尽量避免在Update()中使用这个
【讨论】:
您可以使用Vector3.MoveTowards http://docs.unity3d.com/ScriptReference/Vector3.MoveTowards.html 来完成它
【讨论】:
我不熟悉 Unitiy 函数,但您正式描述了两点之间的线性插值。点A和B之间的线段可以用参数化形式来描述
A * s + B * (1-s)
其中s 来自区间[0,1]。
【讨论】: