DoTween动画插件(上)

  • 基础知识
  • 一些常用方法
  • DOMove和DoLocalMove
  • from Terrns
  • DOText打字机效果
  • DOShakePosition实现震动效果
  • DOColor颜色和透明度变化
  • twenner.SetEase(Ease.某种运动曲线)
  • twenner.SetLoops(次数)
  • twenner.OnComplete(一个方法)


基础知识

DOTween是一个用于Unity的快速、高效、完全类型安全的面向对象动画引擎


一些常用方法

DOMove和DoLocalMove

实现物体的移动,世界坐标和局部坐标,UI的RectTransform坐标的改变,就可以使用LocalMove。

下面是一个小案例:点击按钮,图片UI从屏幕外面,移动到屏幕中央

实现点击按钮,移动到相应位置,但是是一次性的方法,图片到达固定位置,该方法即失效。

public Transform imageTransform;//图片的位置信息
    public void OnClick()
    {
        //点击按钮,图片用时3秒移动到0,0,0的位置
        imageTransform.DOLocalMove(new Vector3(0, 0, 0), 3);
        //默认动画播放完会被销毁
    }

实现点击按钮,图片移动到想应位置,再次点击,则图片返回,并且可以一直使用。

//示例代码
    public Transform imageTransform;//图片的位置信息
    public bool isIn = false;//图片是否在屏幕里
    private void Start()
    {
        //使用tweener对象保存这个动画的信息,每次调用do类型的方法都会创建一个tweener对象,这个对象是由dotween管理的
        Tweener tweenr= imageTransform.DOLocalMove(new Vector3(0, 0, 0), 3);
        //把默认的动画播完就会自动销毁关闭
        tweenr.SetAutoKill(false);
        //不能一上来就执行,要等点击按钮,所以要先暂停
        tweenr.Pause();
    }
    public void OnClick()
    {
        //DOPlayForward和DOPlayBackwards成对出现,会播放对象挂载的所有do类型的方法
        if (isIn == false)
        {
            imageTransform.DOPlayForward();//前放
            isIn = true;
        }
        else
        {
            imageTransform.DOPlayBackwards();//倒放
            isIn = false;
        }
    }

(下面是示例图,不过因为是使用开始和结束的两张截图做的Gif图,所以没有中间过程,只是开始和结束的对比,整篇文章的图都是这样的)

UNITY 2D动画插件 unity3d动画插件_游戏


from Terrns

Domove()是移动到指定位置
Domove().From()是指定位置移动到初始位置(绝对位置)
Domove().From(true)是指定位置移动到初始位置(相对位置)
(不仅是DoMove,其他的DoLocalMove,DoMoveX,DoMoveY,等等都是,只是举个例子)

//示例代码
    public Transform cube1;
    public Transform cube2;
    public Transform cube3;
    void Start()
    {
        //初始时,所有方块都在(1,0,0)
        cube1.DOMoveX(4, 2);//两秒,方块1移动到(4,0,0)位置
        cube2.DOMoveX(4, 2).From();//两秒,方块从(4,0,0)位置移动到(1,0,0)
        cube3.DOMoveX(4, 2).From(true);//两秒,方块从(5,0,0)位置移动到(1,0,0)

    }

UNITY 2D动画插件 unity3d动画插件_游戏_02


DOText打字机效果

DoText可以实现字体在一段时间内逐个显示结束,真的要实现打字机一个一个匀速的输出字体,还需要配合控制运动曲线的SetEase。

//示例代码
    public Text text;
    void Start()
    {
        text.DOText("正在学习使用DoTween插件实现打字机效果,及字体的逐一显示",8);
    }

DOShakePosition实现震动效果

//示例代码
    transform.DOShakePosition(0.5f);//在0.5秒内,以默认振幅1在随机范围震动
    transform.DOShakePosition(0.5f,3);//在0.5秒内,以振幅3在随机范围震动
    transform.DOShakePosition(0.5f,new Vector3(2,0,0));//在0.5秒内,以振幅为2在X轴震动

DOColor颜色和透明度变化

//示例代码
    public Text test1;
    public Text test2;
    void Start()
    {
        test1.DOColor(Color.green, 4);//4秒,这行字体变成绿色
        test2.DOFade(0.5f, 4);//4秒,这行字体透明度变为50%
    }

UNITY 2D动画插件 unity3d动画插件_游戏引擎_03


twenner.SetEase(Ease.某种运动曲线)

运动曲线,用来调节运动速度的变化

如果需要匀速的动画速度的话,可以选择:linear

下面是一部分曲线的图示:

UNITY 2D动画插件 unity3d动画插件_学习_04


UNITY 2D动画插件 unity3d动画插件_游戏_05

(这俩张图截取自菜鸟教程,还可以直观的对比各曲线的运动速度变化,想看的可以自己去看,以下是网址:菜鸟教程


twenner.SetLoops(次数)

控制动画的循环次数


twenner.OnComplete(一个方法)

在动画执行结束时调用某个方法


📜以上是一些常用方法通过代码来实现,DoTween也支持可视化编辑来实现动画效果,下一篇是DoTween的可视化编辑的介绍。