7666人加入学习
(78人评价)
Dotween API详解及动效插件(Unity 2017.3)

制作完成于2018-12-14

价格 免费

只有Shader里有_Color属性,才可以通过material.color对物体的颜色进行改变

material.DOColor(color.red,"_TintColor",2);

通过这种方式,可以找到Shader中的Color属性

或者

material.SetColor

[展开全文]

Blender是一个增量播放动画

和DOMove不同的是,Blendable会在目标点的位置做一个增量

[展开全文]

* SetOptions画的圈是否是闭合的  
         * true完整的回路
         * SetOptions(true,AxisConstraint.Z).
         * AxisConstraint轴向枚举 锁定轴 会变成单方面运动
         * --AxisConstraint.None取消锁定
         *
         * 锁定旋转
         * AxisConstraint.Y
         * 跟上面一样,只是参数的传递位置不一样
         *

[展开全文]

不要复制之前cube物体

挂载脚本lee,会跟着运动一起运动

=-=

 

/**路径动画—位置参数
         * DOPath局部   DoLocalPath
         * 实现可视化操作
         * 公有字段,保存点
         * public Transform[] PointList;
         *
         * 简便获取数组的参数
         * 1.位置  
         * 2.持续时间
         * 3.运动曲线
         *      PathType.Linear直线运动  
         *      PathType.CatmullRom 曲线运动
         *      
         * 4.LookAt朝向PathMode.Full3D
         * 参数
         * Ignord=0 会忽略lookAt
         * Full3D=1 常规的3D效果 相当于没有限制的lookAt
         * TopDown2D=2 朝向只能上下的改变
         * Sidescroller2D=3  朝向只能左右的改变
         *
         * 5.分辨率 50
         * 0-100 消耗性能逐渐高
         *
         * 6.路径颜色Color.blue
         * 默认白色
         *
         */
        //Vector3[] positons = PointList.Select(u=>u.position).ToArray();
        //Vector3[] positons = new Vector3[] { new Vector3(0,0,0), new Vector3(2, 0, 0), new Vector3(0, 0, -2), new Vector3(2, 0, -2) };
        //ositons[2] = new Vector3();

        var positons = PointList.Select(u => u.position).ToArray();
        transform.DOPath(positons, 2, PathType.CatmullRom,PathMode.Full3D,50,Color.red);

 

 

[展开全文]

//版本需要升级到 C# 5   Task.Delay(TimeSpan.FromSeconds(1f));
        tweer.Delay();//动画延迟
        /**
         * 硬编码
         * if(time=5){}
         *
         * 对于项目的稳定性很差
         */
        tweer.Duration();//持续时间  infinity无限循环

 

[展开全文]

  var list=DOTween.TweensByTarget(transform,true);
        //收集正在播放的动画(缓存值中)
        //list为空的话,是直接不占内存

        //获取当前正在播放的动画  延迟状态也是正在播放当中的
        var list1 = DOTween.TotalPlayingTweens();

 

[展开全文]

var list=DOTween.TweensByTarget(transform,true);//收集正在播放的动画(缓存值中)

 

[展开全文]

C#语法糖

OnComplete(() => { })

 

[展开全文]

值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数

[展开全文]

(3) Ease 运动曲线的设置
1)以Ease枚举作为参数
例如:
transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
第三个参数 period 值的范围是 - 1~1
值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数

2)使用AnimationCurve当作参数
例如:
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
AnimationCurve 横轴是时间,不过不是具体的时间,而是时间比例
AnimationCurve 纵轴是倍数
假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
此物体最后动画结束时的实际坐标即为 v* (e -s)+ s

[展开全文]

设置动画的帧函数

transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);
第一个参数 UpdateType :选择使用的帧函数
UpdateType.Normal:更新每一帧中更新要求。 
UpdateType.Late:在LateUpdate调用期间更新每一帧。 
UpdateType.Fixed:使用FixedUpdate调用进行更新。 
UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
第二个参数:为TRUE,则补间将忽略Unity的Time.timeScale

[展开全文]

        /**24-设置参数—设置ID及设置动画为增量运动
         *
         */
        //设置动画ID   参数 int string object(不建议使用,设计装箱拆箱)
        transform.DOMove(Vector3.one, 2).SetId("Id");
        //可以调用静态方法    调用缓存的动画   减少性能
        //DOTween.Play("Id");

        //是否可回收
        transform.DOMove(Vector3.one,3).SetRecyclable(true);

 

  //增量运动   当前坐标 + 传入值 = 目标值
        transform.DOMove(Vector3.one, 3).SetRelative(true);

 

 

 

[展开全文]

 /**23-设置参数—设置延时及以速度为基准的动画
         * 延迟了3s才执行
         *transform.DOMove(Vector3.one,2).SetDelay(3);
         *
         *目标点  速度
         *transform.DOMove(Vector3.one,3).SetSpeedBased();
         *
         *参数 true 以速度为基础
         *transform.DOMove(Vector3.one,3).SetSpeedBased(true);
         *
         *false则不是
         *
         */

 

        transform.DOMove(Vector3.one, 3).SetSpeedBased(false);

 

[展开全文]


        /**设置杀手动画
         * 不然,会缓存到DoTween内部数据中
         */
        transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Incremental).SetAutoKill(true);
        //下次直接调用 不会涉及计算

 

[展开全文]

预添加 会直接添加动画到Append的前面,也就是最开始的时候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));
这里需要特别说一下预添加的执行顺序问题
它这里也采取了队列的性质,不过,预添加与原本的的队列相比是一个反向队列

 

eg:

Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
quence.PrependInterval(1);
执行顺序是 PrependInterval----Prepend-----Append
就是最后添加的会在队列的最顶端

[展开全文]

        /**17-队列—插入动画用法
         *     在帧函数中,按顺序执行
         *     帧被多次执行,则覆盖之前的帧
         *     
         *     添加到空白动画    比如第8s....
         */
        Sequence quence = DOTween.Sequence();
        quence.Append(transform.DOMove(Vector3.one, 2));//把一项加入 0-2s
        quence.AppendInterval(1);//添加延时1s        2-3s
        quence.Append(transform.DOMove(new Vector3(1, 0, 1), 2));//把一项加入  3-5s


        quence.Insert(2, transform.DOMove(-Vector3.one, 1));//在0s插入动画

 

[展开全文]

授课教师

课程特色

下载资料(1)
视频(45)