Unity-向量插值运算

线性插值

Mathf.Lerp(start,end,t)start、end是一个值。

Vector3.Lerp(start,end,t) start、end是三个值。x,y,z

线性插值应用

 第一种写法:

首先创建三个物体A、B、target。目标是让A、B都随着target的移动而移动。

 我们可以利用Vector3.Lerp函数来完成。以A为先快后慢方法。

先得到三个物体的Transform.

 再使用Lerp函数:

 Lerp的返回值是A的位置(position)。一开始A与target相距很远,因此A.position = A.position+

(target.positon-A.position)*Time.deltaTime  会和一开始的位置改变很大。速度很快。

当A十分接近target时,改变很小,速度很慢。

 第二种:

我们想让一个物体匀速的移动到另一个物体处。那么怎么办呢?我们可以将二者的距离进行均分,当t>=1时,完成移动。

因为要匀速,所以不能使(end-start)进行改变,因此start当为一定值,用t的改变来改变B的position.

 这样有一个缺点,那就是当time>1时,改变Target的位置,B的位置会瞬移到目标位置。

 这样写的话,target动起来 B也是匀速运动的。

球形插值

 线性和球形插值的区别:

 

猜你喜欢

转载自blog.csdn.net/qq_42705793/article/details/127615422