You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Vector3插值的lerp实现替换为cubic easing in缓动效果

实现思路

你不需要对Vector3做额外处理,所有缓动函数的作用都是调整Vector3.Lerp的第三个进度参数,不管你插值的是浮点数、向量还是颜色,这个逻辑都是通用的。

具体实现步骤

  • 首先确认立方缓入(Cubic Ease In)的计算逻辑:输入0~1区间的线性进度值,返回经过缓动转换的进度值,公式为 easedFraction = fraction * fraction * fraction
  • 保持你原有计算线性进度fraction的逻辑不变,只需要把fraction代入缓动公式转换后,再传给Vector3.Lerp即可
  • 可以额外加Mathf.Clamp01限制进度范围,避免时间超出总时长后出现异常插值

修改后的代码示例

if (Vector3.Distance(activeTween.Target.position, activeTween.EndPos) > 0.1f)
{
    float fraction = (Time.time - activeTween.StartTime) / activeTween.Duration;
    // 限制进度在0~1区间,避免超出范围
    fraction = Mathf.Clamp01(fraction);
    // 应用立方缓入转换
    float easedFraction = fraction * fraction * fraction;
    // 转换后的进度直接传入Lerp即可
    activeTween.Target.position = Vector3.Lerp(activeTween.StartPos, activeTween.EndPos, easedFraction);
}

补充说明

如果你后续要换成其他缓动效果(比如弹性、回弹、缓出等),也只需要替换easedFraction的计算逻辑即可,不需要修改Lerp的其他参数,插值目标的类型(Vector3/Vector2/Color等)也不会影响缓动函数的使用。

内容的提问来源于stack exchange,提问作者Weeboo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:04