
Unity Mathf.Lerp 使用详解:匀速、递减与曲线插值三种方式
八月 06, 2022 1641 4 分钟
参数解析
1 | |
| 参数 | 类型 | 说明 |
|---|---|---|
| a | float | 起始值 |
| b | float | 目标值 |
| t | float | 插值系数,自动夹紧到 [0, 1] |
返回值:返回一个 float,表示从 a 到 b 之间按 t 线性插值的结果。
计算公式:result = a + (b - a) * t
- 当
t = 0时,返回a - 当
t = 1时,返回b - 当
t = 0.5时,返回a和b的中点
注意:
t会被自动夹紧到[0, 1]范围,传入超出范围的值不会产生外插效果。
使用方式
1. 匀速插值
在固定时间内从起始值线性过渡到目标值,t 随时间均匀增长。
1 | |
2. 递减插值(平滑阻尼效果)
每帧将当前值向目标值靠近固定比例,越接近目标值移动越慢,产生缓动效果。
1 | |
⚠️ 此方式的缓动速度与帧率相关,若需帧率无关的平滑效果,建议将
smoothFactor替换为1 - Mathf.Pow(0.1f, Time.deltaTime)。
3. 曲线插值
结合 AnimationCurve 控制插值节奏,可实现加速、减速、弹性等非线性效果。
1 | |
注意事项
Mathf.Lerp只接受 3 个参数,不存在 4 参数重载。- 若需要对向量进行插值,应使用
Vector3.Lerp或Vector2.Lerp。 - 若需要对颜色进行插值,应使用
Color.Lerp。 - 若需要对四元数(旋转)进行插值,应使用
Quaternion.Lerp或Quaternion.Slerp。
- 本文作者:樱白 - Cherry White
- 本文链接:https://cherry-white.github.io/posts/6ab666a7.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!
☕ 如果这篇文章对你有帮助
欢迎请我喝杯咖啡,支持持续创作
扫码打赏
查看评论