一、使用教程:
插件官网网址:http://dotween.demigiant.com/;首先导入插件,在写代码的时候需引入命名空间 using DG.Tweening;
1.前提说明:
Tweener:一个持有值的控制并使值起作用的tween
Sequence:一个特殊的tween,与其控制一个值,Sequence控制其它tweens和将它们当成一个组。
Tween:一个通用的词,表名包括Tweener和Sequence Nested
tween:一个包含在Sequence内的tween。
2.命名前缀
DO:动作操作前缀。如transform对象或material对象,当然也是DOTween类的前缀。例如:transform.DoMove()等等。Set:动画设置操作前缀。例如:Tweener.SetLoop(),Tweener.SetEase()等等。
On:响应回调事件前缀。例如:Tweener.OnStart(),Tweener.OnComplete()等等。
3.给变量添加动画
给<T>类型变量var添加一个动画,参数 {时间:t(float), 目标值: target(<T>)};Dotween.To(()=>var,x=>var=x,target,t); //前两个参数是lambda表达式(匿_名函数的一种表达方式)
变量类型可以为int、Vector3、Color等等.但是注意变量 var 类型必须跟目标值 target 的类型一致。
4.给GameObject添加动画
Dotween 在transform等许多组件新添了一些动画函数,用于该组件动画控制。
5.动画的基本设置
DOTween.defaultAutoKill:(全局操作) 当该值为真时,之后创建的动画当其播放完毕之后会自动被销毁。 DOTween.defaultAutoPlay:(全局操作) 当该值为真时,之后创建的动画会自动播放。
DOTween.defaultEaseType:(全局操作) 该值为创建动画时候默认的动画曲线。
DOTween.defaultLoopType:(全局操作) 该值为创建动画时候默认的循环模式。
tweener.SetAs():(局部操作) 参数为Tween或者TweenParams.用于设置该动画相关属性。
tweener.SetAutoKill():(局部操作) 参数为true或者false.用于设置该动画是否自动销毁。
tweener.SetId():(局部操作) 参数为obj.用于设置该动画id。
tweener.SetLoop():(局部操作)参数为float&LoopType.用于设置该动画循环次数和循环类型,次数为-1表示无限循环。
6.动画的播放操作
tweener.From():参数为true或者false。表示运动为相对运动还是绝对运动。并且动画效果为tweener的逆动画。tweener.Pause():动画播放暂停。
tweener.Play():动画继续播放。
tweener.Flip():动画播放中执行,动画原轨迹运动到起始点,当动画回到起始状态时动画结束。
tweener.Complete():动画播放中执行,物体立即运动到动画末尾状态,动画结束。
tweener.Goto():参数为float,表示动画立即进入到时间为t时候的状态。
tweener.PlayForward():动画顺序播放。
tweener.PlayBackwards():动画倒序播放。
tweener.TogglePause():顺序/倒序播放。该方法会自动识别物体当前状态,如果在起始点就顺序,否则就逆序。
tweener.ReStart():动画重新开始播放。
tweener.Kill():立即销毁该动画。
7.动画的回调函数
tweener.OnComplete():动画结束时触发。
tweener.OnPlay():动画开始播放时触发。
tweener.OnStart():动画被创建时触发。
tweener.OnKill():动画被销毁时触发。
选取了几个常用的,至于其余的可以查看DOTween的官网介绍,网址:http://dotween.demigiant.com/。
8.动画的可视化创建
给要添加动画的物体上添加DOTweenAnimation组件。在组件面板上即可选择动画类型、设置动画属性。
二、DOTween的Sequence应用
1.基本介绍:
a.序列和动画一样,但是并不是动画属性或是其他什么值而是作为动画一个群体存在。b.序列可以无层数限制地被嵌套在任意序列中。
c.序列不需要一个接一个延续,你可以将任意动画插入到序列中。
d.一个动画只能用于某一个序列中,意味着不能在多个序列中插入相同动画。
e.得到主序列的时候,你不能单独控制其中被嵌套的动画或序列。
2.创建一个序列的两步:
a.创建一个新的序列作为存储。b.在序列中插入回调函数或者动画。
3.相关方法介绍:
DOTween.Sequence() 静态,返回一个新的空序列。sequence.Append(Tween tween) 添加一个动画到序列末尾。(意思就是当序列前面动画播放完毕时此动画才开始播放)
sequence.AppendCallback(TweenCallback cb) 添加回调函数到序列末尾。(当序列前面动画播放完毕时会执行此方法)
sequence.AppeedInterval(float interval) 添加一段空时间到序列末尾。(当序列前面动画播放完毕时会延迟一段时间)
sequenve.Insert(float time,Tween tween) 插入一段动画到指定时间。(注意动画是和原序列当前时间动画合并重叠)
sequenve.InsertCallback(float time,TweenCallback cb) 插入回调函数到序列指定时间。
sequenve.Join(Tween tween) 插入动画与序列最后一个动画(这里的最后是指最后加入序列而非序列末尾)同时播放。
sequenve.Prepend、sequenve.PrependCallback、sequenve.PrependInterval 和前面三个类似,这里是加入到序列开头。
4.注意事项:
a.以上方法只能在序列刚被创建之后执行也就是必须是在创建序列同一个代码块,或者是当序列暂停时执行。否则无效。b.一个动画必须是完全被创建之后才能加入到序列之中,因为加入到序列之后该动画将会被锁定。
c.无限循环的动画是不能被加入到序列中。
d.你可以创建一个序列只有回调函数和延迟,这样这个序列就当做了一个计时器使用。
三、DOTween的Path应用
1.基本介绍:
如果之前接触过iTween之类的动画插件应该对Path这个功能不会太陌生。主要功能就是:a.路径点的创建和删除。
b.路径的可视化。
c.路径动画的控制。
需要注意的是:一旦Path动画开始播放我们就不能对Path路径有任何修改。
当然DOTween对Path集成功能越完善我们要修改就越麻烦:
a.物体在Path上的移动作为动画只有duration的概念,所以我们要模拟速度只能用Length/speed来模拟.
b.如果物体和原来的Path动画有一个定向量的偏移(例如跑酷类游戏的左右)。我们也不能直接改动画:
i.在OnUpdate里面加回调函数设置偏移量。
ii.创建一个新的Path路径然后根据当前的Path路径加上偏移量。然后将物体定位到当前时间播放。
2.Path路径动画的创建:
静态创建:在需要添加Path动画的物体上挂上 DOTweenPath 组件.
a. Shift + Ctrl : 添加路径点
b. Shift + Alt : 删除路径点
动态创建:
transform.DOPath(vector3[] waypoints,float duration);
a. waypoints : 路径点
b. duration : 动画时间
c. pathtype : 路径类型,路径类型分为线性或者利用CatmullRom插值算法形成的曲线。(默认参数)
d. pathmode : 路径模式,主要是用于对物体三个方向上的旋转的限制。(默认参数)
e. resolution :CatmullRom算法的参数,数值越大曲线越精细,一般5足以,默认为10。(默认参数)
f. gizmoColor :辅助线的颜色,只会在动画Running时在Secene面板上可见。 (默认参数)
3.Path路径动画的属性:
一般动画有的属性Path都有,我就介绍几个独特的属性:a. Ease :动画类型,其实前面动画也有这个属性,我只是想推荐一个网址:
http://robertpenner.com/easing/easing_demo.html
b. ClosePath :封闭路径,如果勾选此属性路径将会形成一个封闭环。
c. LocalMovement :局部移动,如果勾选此属性将会按照局部坐标移动。
d. Orientation :运动朝向,分为ToPath朝向路线LookAtTran朝向Tran和LookatPos朝向点.
e. LookAhead :朝向前瞻性,数值越大朝向约向靠近更前方的点。
f. Relative :点相对,表示路径点是否与物体为相对的。
4.Path路径动画的相关方法:
一般动画有的方法Path都有,我就介绍几个独特的方法:a. SetOptions(bool closePath,AxisConstraint lockPos,AxisConstraint lockRota);
i.第一个参数不用说上面有。
ii.路径上三个维度的位置限制,给的参数为AxisConstraint.X,那么路径在X上位置不会变化。
ii.路径上三个维度的方向限制,给的参数为AxisConstraint.X,那么路径在X上方向不会变化。
b. SetLookAt() 设置Path动画 Orientation 属性的。
c. PathLength() 返回路径长度。
d. PathGetPoint(float pathPecentage); 参数为0~1小数,返回路径上小数百分比对应的点。
e. PathGetDrawPoint(float pathPecentage);参数为返回构成路径点的个数。
注意d.e两个方法,如果返回为Vector3.zero或者null.表示路径无效、路径尚未初始化或者这不是一个路径动画。
本文参考链接http://www.taidous.com/forum.php?mod=viewthread&tid=38030&highlight=DoTween和http://www.taidous.com/forum.php?mod=viewthread&tid=38061&highlight=DoTween。
文章仅供参考和学习