如何使用DOTween对float值实现InOut缓动效果?
DOTween实现Forward值0-1区间InOut缓动
核心修改逻辑
- 移除原示例中所有和立方体移动、旋转、材质变色相关的冗余逻辑
- 使用DOTween内置的
DOTween.To方法直接对目标浮点值做补间,补间过程中实时同步更新Animator的Forward参数 - 保留原示例的延迟启动、无限往返循环逻辑,缓动曲线使用InOut类缓动
- 修复原代码中
valueToLerp变量未声明类型的语法错误
完整实现代码
using UnityEngine; using System.Collections; using DG.Tweening; public class ForwardValueTween : MonoBehaviour { public float duration = 4; public Animator anim; private float valueToLerp = 0f; IEnumerator Start() { // 延迟1秒启动,避开编辑器进入Play模式初始卡顿 yield return new WaitForSeconds(1); // 执行0到1区间的InOutQuad缓动 DOTween.To( () => valueToLerp, newVal => { valueToLerp = newVal; anim.SetFloat("Forward", valueToLerp); }, 1f, duration ) .SetEase(Ease.InOutQuad) // 设置为无限往返循环,不需要循环可删除该行 .SetLoops(-1, LoopType.Yoyo); } }
可选调整项
- 若只需要单次从0到1的缓动,直接删除
.SetLoops(-1, LoopType.Yoyo)代码即可 - 可替换
Ease.InOutQuad为其他InOut类型缓动枚举值,比如Ease.InOutCubic、Ease.InOutSine,匹配你需要的缓动手感 - 调整
duration字段值即可修改单次缓动的时长
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

