DOTween 是一个非常流行的 Unity 插件,用于创建平滑的动画效果。以下是 DOTween 的基本使用方法:
注:使用之前要调用命名空间
1. 移动物体
using DG.Tweening;
using UnityEngine;
public class MoveObject : MonoBehaviour
{
void Start()
{
// 移动物体到 (10, 0, 0) 位置,耗时 2 秒
transform.DOMove(new Vector3(10, 0, 0), 2);
}
}
2. 旋转物体
using DG.Tweening;
using UnityEngine;
public class RotateObject : MonoBehaviour
{
void Start()
{
// 旋转物体到 (0, 180, 0) 角度,耗时 2 秒
transform.DORotate(new Vector3(0, 180, 0), 2);
}
}
3. 缩放物体
using DG.Tweening;
using UnityEngine;
public class ScaleObject : MonoBehaviour
{
void Start()
{
// 缩放物体到 (2, 2, 2) 大小,耗时 2 秒
transform.DOScale(new Vector3(2, 2, 2), 2);
}
}
4. 动画完成后执行回调
using DG.Tweening;
using UnityEngine;
public class MoveWithCallback : MonoBehaviour
{
void Start()
{
// 移动物体到 (10, 0, 0) 位置,耗时 2 秒,完成后执行回调函数
transform.DOMove(new Vector3(10, 0, 0), 2).OnComplete(() =>
{
Debug.Log("Move completed!");
});
}
}
5. 动画序列
using DG.Tweening;
using UnityEngine;
public class SequenceExample : MonoBehaviour
{
void Start()
{
// 创建一个动画序列
Sequence mySequence = DOTween.Sequence();
// 添加移动动画
mySequence.Append(transform.DOMove(new Vector3(10, 0, 0), 2));
// 添加旋转动画
mySequence.Append(transform.DORotate(new Vector3(0, 180, 0), 2));
// 添加缩放动画
mySequence.Append(transform.DOScale(new Vector3(2, 2, 2), 2));
// 播放序列
mySequence.Play();
}
}
6. Ease 曲线
using DG.Tweening;
using UnityEngine;
public class EaseExample : MonoBehaviour
{
void Start()
{
// 使用 Ease 曲线控制动画的缓动效果
transform.DOMove(new Vector3(10, 0, 0), 2).SetEase(Ease.InOutQuad);
}
}
7. 循环
using DG.Tweening;
using UnityEngine;
public class LoopExample : MonoBehaviour
{
void Start()
{
// 设置动画循环 3 次
transform.DOMove(new Vector3(10, 0, 0), 2).SetLoops(3);
}
}
8. 延迟
using DG.Tweening;
using UnityEngine;
public class DelayExample : MonoBehaviour
{
void Start()
{
// 设置动画延迟 1 秒后开始
transform.DOMove(new Vector3(10, 0, 0), 2).SetDelay(1);
}
}
9. 路径动画
using DG.Tweening;
using UnityEngine;
public class PathExample : MonoBehaviour
{
void Start()
{
// 创建路径点
Vector3[] path = new Vector3[] {
new Vector3(0, 0, 0),
new Vector3(5, 0, 5),
new Vector3(10, 0, 0)
};
// 沿着路径移动物体,耗时 5 秒
transform.DOPath(path, 5, PathType.Linear);
}
}