1 Mathf.Lerp(float a,float b,float t)
1.1 官方给出的解释为:用t在a和b之间做线性差值;参数t限制在0到1之间,当t=0时返回值为a,当t=1时返回值为b,当t为0.5时返回值为a到b的中间点。
1.2 应用:(因为该函数有三个变量,所以有好几种应用方式)
1.2.1 做线性差值变化:
float a = 0f;
float b = 4.5f;
private void Update()
{
a = Mathf.Lerp(a, b, Time.deltaTime);//a的值由快变慢线性地无线接近b的值
}
1.2.2 做匀速变化:
float a = 0f;
float b = 4.5f;
float c = 0f;
private void Update()
{
c += Mathf.Lerp(a, b, Time.deltaTime);//
}
1.2.3其他Lerp函数:
Color.Lerp() 颜色的线性插值变化;
Material.Lerp()材质的线性插值变化:经过测试,材质的变化并不能运用与两种不同材质之间;只适用于材质颜色、亮度、透明度等微小的细节变化;
1.2.4可以搭配其他函数如Time.time、Mathf.Lerp等函数做出各种各样的运动;
2 Mathf.InverseLerp(float a,float b,float value)
2.1 官方解释:与lerp正好相反,该函数是计算出value值在a到b之间(所占比例)的参数;
2.2 例如:Mathf.InverseLerp(0,10,1)的返回值是0.1;
2.3 应用:可以搭配其他函数活用:
float a = 0f;
float b = 4.5f;
float c = 0f;
private void Update()
{
c = Mathf.Lerp(a, b, Mathf.InverseLerp(a, b, a + Time.time));//随着时间的推移,c不断从a到b增值;
}
3 Mathf.PingPong(float t,float value)
3.1 官方解释:返回的值将在0到value之间移动;
经过测试:如果t为固定值,返回值不变为这个固定值;
3.2 例子:
Mathf.PingPong(0,5f);返回值一直为0;
Mathf.PingPong(Time.time,5f);返回值为从0到5之间不断变化;
3.3 应用:
float a = 0f;
float b = 4.5f;
float c = 0f;
private void Update()
{
c = Mathf.Lerp(a, b, Mathf.InverseLerp(a, b, a + Mathf.PingPong(Time.time,b-a)));//随着时间的推移,c不断从a到b来回运动;
}