赞
踩
// 缓动移动 transform.DOMove(new Vector3(x, y, 0), 0.5F).SetEase(Ease.InOutSine); transform.DOLocalMove(new Vector3(x, y, 0), 0.5F).SetEase(Ease.InOutSine); // 相对于原本位置的位移(offset) transform.DOBlendableLocalMoveBy(Vector3.one, 2); // 旋转 transform.DORotate(new Vector3(0, 0, -0), 0.5F).SetEase(Ease.InOutSine); // 变为红色 gameObject.GetComponent<Image>().DOColor(Color.red, 2); // 变为透明 gameObject.GetComponent<Image>().DOFade(0, 2) // 多颜色渐变动画 // 第二个参数:Shader的颜色名称,可以在shader中Edit Shader查看名字 // 在DOColor和DOFade中同样适用 GetComponent<MeshRenderer>().material.DOGradientColor(Gradient, "_Color", 2); // 四元向量(如颜色)修改动画 GetComponent<MeshRenderer>().material.DOVector(Color.blue, "_Color", 2);
// 新建动画集 Sequence se = DOTween.Sequence(); // 添加动画 se.Append(Tween); // 添加动画,该动画会与该行之上的Append一起执行 se.Join(Tween); // 插入动画(秒) se.Insert(0, Tween); // 等待 se.AppendInterval(2) // 调用函数 se.AppendCallback(oneCallBack) // 某个时间点调用函数 se.InsertCallback(2, oneCallBack) // 开始 se.Play(); // 暂停 se.Pause(); // 在开始动画前预运行 se.PrependInterval(); se.PrependCallback(); se.Prepend();
SetXXX()
设置参数
可用入参 | 描述 |
---|---|
Ease | Ease函数 |
AnimationCurve | 定制曲线 |
LoopType类型 | 描述 |
---|---|
Yoyo | 正播之后倒播 |
Incremental | 重播时不重置位置 |
Restart | 重播时重置位置 |
DOTween.Pause(ID);// 暂停指定ID
Time.timeScale
影响SetUpdate(UpdateType.Normal, true);
DOTween.To
万能动画
Vector3 v3;
DOTween.To(() => v3, x => v3 = x, new Vector3(10, 10, 10), 10F);
SetAutoKill(false)
,然后运行 DOPlayBackwards()
。public Transform obj; public bool flag; private void Start() { // 新建动画 Tweener tweener = obj.DOMove(new Vector3(1, 1, 1), 1).SetEase(Ease.InBack); // 不会自动销毁 tweener.SetAutoKill(false); // 先不播放这个动画 tweener.Pause(); // 播放一次 // obj.DOPlayForward(); } public void Click() { if (flag) { // 正播 obj.DOPlayForward(); } else { // 反播 obj.DOPlayBackwards(); } flag = !flag; }
From()
,来让动画变成从目标坐标移动到当前坐标From()
存在入参,如果传入true,那么动画的坐标从世界坐标改为相对坐标obj.DOMove(new Vector3(1, 1, 1), 1).From();
OnComplete()
可以让动画在播放结束时,添加一个额外的回调函数OnStart()
可以让动画在播放开始时,添加一个额外的回调函数int value = 2;
obj.DOLocalMove(new Vector3(1, 1, 1), 1).OnComplete(() =>
{
Debug.Log(value);
});
其他的还有onKill
、OnStart
(第一次)、onPlay
(第一次和暂停结束后)、onPause
、onRewind
(重新播放)
DOText()
文字动画txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
DOText()
文字动画txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
// 时间,振幅,频率,振动转向范围, 位移为整数, 是否采用缓动动画
obj.DOShakePosition(2, new Vector3(1, 1, 0), 10, 90, false, true);
DOPunchPosition()
冲击动画 // 冲击 -> 方向、持续时间、次数(频率)、反弹超出距离
obj.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.15f);
Camera camera = Camera.main; // 修改宽高比(改宽度) camera.DOAspect(0.5f, 2); // 修改背景颜色 camera.DOColor(Color.green, 2); // 修改摄像机近切面和远切面的值 camera.DONearClipPlane(0.5f, 2); camera.DOFarClipPlane(0.5f, 2); // 透视模式 摄像机视野 camera.DOFieldOfView(0.5f, 2); // 正交模式 摄像机大小 camera.DOOrthoSize(0.5f, 2); // 摄像机镜头在界面中显示的位置与大小 camera.DORect(new Rect(.1f, .2f, .3f, .4f), 2); // 时间,振幅,频率,振动转向范围, 是否采用缓动动画 camera.DOShakePosition(2, new Vector3(1, 1, 0), 10, 90, false);
// 逆播回到原位置
transform.DOSmoothRewind();
// 维持当前速度回到原位置
transform.DORewind();
// 播放
transform.DOPlay();
// 暂停
transform.DOPause();
// 切换暂停和播放的状态
transform.DOTogglePause();
// 跳转时间点、跳转后是否继续播放
transform.DOGoto(0.2f, true);
// 倒播
transform.DOPlayBackwards();
// 获取所有播放的动画
var list = DOTween.PlayingTweens();
// 获取所有暂停的动画
list = DOTween.PausedTweens();
// 根据ID获取动画
list = DOTween.TweensById("tMove");
// 根据对象获取动画,是否仅在其播放时候获取到
list = DOTween.TweensByTarget(transform, true);
var tweener = transform.DOMove(Vector3.zero, 2).SetLoops(3); // 设置动画播放的时间点 tweener.fullPosition = 0; // 动画循环的次数 Debug.Log( tweener.CompletedLoops() ); // 动画播放时间,如果循环是否累计播放时间 Debug.Log( tweener.Elapsed(true) ); // 动画播放的百分比 Debug.Log( tweener.ElapsedDirectionalPercentage() ); // 包括循环、动画播放的百分比 Debug.Log( tweener.ElapsedPercentage() ); // 判断动画是否反向 Debug.Log( tweener.IsBackwards() ); // 判断动画是否活动 Debug.Log( tweener.IsActive() ); // 判断动画是否完成 Debug.Log( tweener.IsComplete() ); // 判断动画是否初始化 Debug.Log( tweener.IsComplete() ); // 判断动画是否正在播放 Debug.Log( tweener.IsPlaying() ); // 判断动画循环次数 Debug.Log( tweener.Loops() );
Tweener tweener; void Start() { tweener = transform.DOMove(Vector3.zero, 2).SetLoops(3); StartCoroutine(Wait()); } IEnumerator Wait() { yield return tweener.WaitForElapsedLoops(2); Debug.Log("循环了两次"); } IEnumerator Wait() { yield return tweener.WaitForPosition(3); Debug.Log("过了3秒"); }
public Transform[] pointList;
void Start()
{
Vector3[] positionList = new Vector3[pointList.Length];
for (int i = 0; i < pointList.Length; i++)
positionList[i] = pointList[i].position;
// v3集合、动画时间、路径是圆滑还是线性、朝向、点数量(对于圆滑)
transform.DOPath(positionList, 8, PathType.CatmullRom, PathMode.Full3D, 50)
// 是否回路、路径在哪个轴
.SetOptions(true, AxisConstraint.None)
// 设定朝向: 点
// .SetLookAt(new Vector3(0, 0, 0));
// 设定朝向: 路径前方(0)->路径后方(1f)
.SetLookAt(0);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。