Mathf.Lerp 插值
C#
=> static float Lerp(float from, float to, float t);
Description 描述
Interpolates a
towards b
by t
. t
is clamped between 0 and 1.
基于浮点数t返回a到b之间的插值,t限制在0~1之间。
When t
= 0 returns from. When t
= 1 return to
. When t
= 0.5 returns the average of a
and b
.
当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。
老师在设计模式课程中,t用的是 2*time.deltaTime ,说是2秒钟执行完,这是对的吗?
其实是不对的。
t是一个进度值。如果传递0进去,那么返回的是最小的值,如果传递1进去,那么返回的是最大值。传递0-1之间的小数,返回时的最小到最大之间的插值,其实就是(max-min)*t
2*Time.DeltaTime只是不会是0和1之间的进度值。。。他只是近似的算法。
正确的应该是:Time.DeltaTime / 剩余需要的时间
你可以这样来算:
float t;
float timerLeft = ( to - from ) / 速度;
if( timerLeft > 0.01f )
t = Time.DeltaTime / timerLeft;
else
t = 1;
....Lerp( from, to, t );