DoTween的使用与详解

来源:互联网 发布:mac粉底液专柜价 编辑:程序博客网 时间:2024/05/18 17:55

DOTween路径动画详解与使用

转载请注明出处

DOTween插件一般与UGUI结合使用

DoTween的运动方式

 

1、DOTween.To()方法

对变量做一个动画,通过插值的方式修改一个值的变化

2、控制Cube和UI面板的动画

1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置

1
using UnityEngine;
2
using System.Collections;
3
using DG.Tweening;//引入DoTween命名空间
4
public class GameStart : MonoBehaviour
5
{
6
7
    public Vector3 myValue = new Vector3(0, 0, 0);
8
    void Start()
9
    {
10
        //对变量做一个动画,通过插值的方式去修改一个值的变化
11
        DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 0, 0), 2);//用两秒的时间从0,0,0变化到10,10,10
12
         //()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,0,0),表示达到的目标值,2表示所需时间
13
    }
14
    void Update()
15
    {
16
        transform.position = myValue;//赋值给当前位置
17
    }

2)、UI面板的移动

新建任务面板,将脚本挂到UI面板上

3)、对float类型的值进行修改

1
    public float myValue2=0;
2
    void Start()
3
    {
4
        DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);//表示将一个类型的值从0变为10,所需时间是2秒
5
    }

 3、小案例:用按钮控制UI面板的显示和隐藏

将脚本挂在Canvas上

FromTween:表示让物体从目标位置移动到当前位置,即等同于播放反向的移动动画

DOMoveX()、DOMoveY()、DOMoveZ()

如果只是让物体的单个坐标移动,可直接用DOMoveX()、DOMoveY()、DOMoveZ()方法控制移动动画,参数为(目标位置,所需时间)
1
 transform.DOMoveX(5, 1);

From()

DoTween中任何调用动画的方法后面都可以添加From(),表示从目标位置移动到当前位置

From(true)

表示目标坐标等于当前坐标加上当前目标坐标,如果物体当前坐标为2,那么这行代码表示从目标位置(5+2),经过1秒,移动到当前位置(2)
1
       transform.DOMoveX(5, 1).From(true);

DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ()

表示局部坐标的位移动画方法。DoTween中所有对动画的设置都是通过对象Tweener来完成的

SetEase()

我们可以通过次方法来设置动画的曲线,曲线动画效果很多,在此仅做三个案例,其他的可以在系统给的枚举类型中找

Ease.InBack

表示物体先向后一点,再向前播放
1
            tweener.SetEase(Ease.InBack);

Ease.InBounce

相当于一个蓄力进入的效果

Ease.OutBounce

相当于一个落地之后的弹跳效果
1
tweener.SetEase(Ease.OutBounce);

SetLoops()

我们可以通过此方法设置动画循环的次数

OnComplete()

表示事件函数,当前动画播放完后调用另一个方法,参数为需要调用的方法
1
    void Update()
2
    {
3
        if (Input.GetMouseButtonDown(0))
4
        {
5
            Tweener tweener = transform.DOLocalMoveX(0, 2f);//DoTween中所有对动画的设置都是通过对象Tweener来完成的
6
            tweener.SetEase(Ease.OutBounce);//相当于一个落地之后弹跳的效果
7
            tweener.SetLoops(2);//表示动画的循环次数
8
            tweener.OnComplete(OnClick);//表示当前动画播放完之后调用的事件,相当于一个注册方法,参数为需要注册的方法
9
        }
10
    }
11
    void OnClick()
12
    {
13
        print("sss");
14
    }

DOText()

对话框文字动画,该方法显示打字机效果

DOShakePosition()

屏幕震动效果,原理是让摄像机进行随机方向的位移,产生震动的假象
1
        if (Input.GetMouseButtonDown(0))
2
        {
3
            transform.DOShakePosition(0.8f);//表示震动时间是0.8秒,震动方向随机
4
            transform.DOShakePosition(0.8f,new Vector3(1,1,0));//表示震动时间是0.8秒,震动方向为x和y方向,震动强度为1
5
        }

DOColor()、DOFade()

颜色渐变和透明度渐变动画


DoTween插件的可视化操作

在物体上添加DoTweenAnimation脚本

如何在脚本中控制DoTweenAnimation动画脚本的播放 

前提,脚本挂在面板上,并且取消DoTweenAnimation面板的自动播放和自动销毁
1
using UnityEngine;
2
using System.Collections;
3
using DG.Tweening;
4
using UnityEngine.UI;
5
6
public class Panel : MonoBehaviour
7
{
8
9
    private DOTweenAnimation tweenAnimation;
10
    private Button _btnButton;
11
    private bool isShow = false;
12
    void Start ()
13
    {
14
        tweenAnimation = GetComponent<DOTweenAnimation>();
15
        _btnButton =transform.parent.Find("Button").GetComponent<Button>();
16
        _btnButton.onClick.AddListener(OnClickBtn);
17
     
18
    }
19
    void OnClickBtn()
20
    {
21
        if (isShow==false)
22
        {
23
            tweenAnimation.DOPlayForward();
24
            isShow = true;
25
        }
26
        else
27
        {
28
            tweenAnimation.DOPlayBackwards();
29
            isShow = false;
30
        }
31
    }
32
}

DoTweenPath路径编辑器

在场景中添加一个Cube,在Cube身上添加组件DOTweenPath
 
参数:
Shift+Ctrl:添加路径点
Shift+Alt:移除路径点
 
AutoPlay:自动播放动画
AutoKill:自动删除动画
Duration:动画时长
Delay:延迟时长
Ease:动画曲线,Linear:匀速

Loop:循环次数,-1表示死循环
LoopType:循环模式,Restart:重新启动,表示走完路径后从开始重新走;Yoyo:悠悠球:从开始走到结尾,再从结尾走到开始
Incremental:增量模式
 
PathType:路径模式
CatmullRom:曲线;Linear:直线
ClosePath:封闭路径,表示使路径首尾相连
LocalMovement:是否是本地坐标

Orientation:运动朝向
ToPath:朝向路径方向
Look At Transform:朝向一个目标物体
Look At Position:朝向一个目标位置
 
Relative:相对的,表示路径跟随物体移动
Show Indexs是否显示索引

 触发事件和路径点的坐标的设置
 

 添加按钮控制动画的播放


在场景中添加Button,并且将Cube拖进Button的OnClick事件方法中选择DOTweenPath的DOTogglePause方法,实现当点击按钮后开始播放动画,再次点击时会停止播放(前提:将DOTweenPath组件的AutoPaly和AutoKill选项取消选择)

 
原创粉丝点击