Lerp线性插值

在Unity3D中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,其函数原型如下:
1.Material.Lerp 插值
function Lerp(start : Material, end : Material, t : float) : void
在两个材质之间插值
 
2.Vector2.Lerp 插值
static functionLerp (from : Vector2, to : Vector2, t : float) : Vector2
两个向量之间的线性插值。按照数字t在form到to之间插值。
t是夹在0到1之间。当t=0时,返回from。当t=1时,返回to。当t=0.5时放回from和to之间的平均数。

3.Vector3.Lerp 插值
static functionLerp (from : Vector3, to :Vector3, t : float) :Vector3
两个向量之间的线性插值。按照数字t在from到to之间插值。

4.Vector4.Lerp 插值
static functionLerp (from : Vector4, to : Vector4, t : float) : Vector4
两个向量之间的线形插值。按照数字t在from到to之间插值。t是夹在[0...1]之间的值。,当t = 0时,返回from。当t = 1时,返回to。当t = 0.5 返回from和to的平均数。
 
5.Mathf.Lerp 插值
static functionLerp (from : float, to : float, t : float) : float
基于浮点数t返回a到b之间的插值,t限制在0~1之间。当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。
 
6.Color.Lerp 插值
static functionLerp (a : Color, b : Color, t : float) : Color
通过t在颜色a和b之间插值。
"t"是夹在0到1之间的值。当t是0时返回颜色a。当t是1时返回颜色b。
 
插值,从字面意思上看,就是在其间插入一个数值,其原理为a=from + (to - from) * t

例如Mathf.Lerp(100.0f, 200.0f,0.2f) = 100 + (200 - 100)*0.2 = 100 + 100 * 0.2 = 120

应用例子:

1.几秒内移动到目标点,其中smooth为移动时间

         public Transform target;  
         public float smooth = 5.0F;  
         void Update()   
         {  
                   transform.position =Vector3.Lerp(transform.position, target.position, Time.deltaTime * smooth);  
         }  

  2.我们以前所玩的游戏中,主人公身上依附着一只宠物如鹰,主人公移动时,鹰会跟随着飞动,主人公移动得快它就飞行跟动得快,始终不会离开主人公,使用Lerp插值函数就可实现。

一直想把之前工作、学习时记录的文档整理到博客上,一方面温故而知新,一方面和大家一起学习 -程序小白
原文地址:https://www.cnblogs.com/wang-jin-fu/p/8195875.html