【unity3D】DoTween动画插件(上)

💗 未来的游戏开发程序媛,现在的努力学习菜鸡
💦本专栏是我关于游戏开发的学习笔记
🈶本篇是unity的DoTween动画插件

基础知识

DOTween是一个用于Unity的快速、高效、完全类型安全的面向对象动画引擎
官网地址:http://dotween.demigiant.com/getstarted.php

在这里插入图片描述


一些常用方法

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图,所以没有中间过程,只是开始和结束的对比,整篇文章的图都是这样的)
在这里插入图片描述


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)

    }

在这里插入图片描述


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%
    }

在这里插入图片描述


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

运动曲线,用来调节运动速度的变化
如果需要匀速的动画速度的话,可以选择:linear
下面是一部分曲线的图示:
在这里插入图片描述
在这里插入图片描述

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


twenner.SetLoops(次数)

控制动画的循环次数


twenner.OnComplete(一个方法)

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


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


更新一下:下一篇博客,可视化编辑部分在这里:DoTween动画插件(下)
💦更多内容请前往主页置顶或点击链接直达:【unity3D】游戏开发专栏的目录

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
//十秒内X,Y,Z 局部坐标(localPosition)移动到 10,10,10 位置 //transform.DOBlendableLocalMoveBy(new Vector3(10, 10, 10), 10); //十秒内 X,Y,Z 方向的局部旋转(localPosition),转动到 30,30,30 //transform.DOBlendableLocalRotateBy(new Vector3(30, 30, 30), 10); //十秒内X,Y,Z坐标移动到 自身坐标 加 new Vector3( 10,10,10) 位置 原始 坐标 3,3,3,移动后 13,13,13 //transform.DOBlendableMoveBy(new Vector3(10, 10, 10), 10); //十秒内X,Y,Z自身旋转到 30,30,30(有父物体的相对于父物体) //transform.DOBlendableRotateBy(new Vector3(30, 30, 30), 10); //十秒内 自身X,Y,Z方向的比例 加 3,3,3如原始比例 2,1,1 变化后5,4,4 //transform.DOBlendableScaleBy(new Vector3(10, 10, 10), 10); //执行该方法,变化立即结束,且完成移动 //transform.DOComplete(); //在变化过程中执行该方法,则物体慢慢的变回原样,如果变化已经完成,该方法无效 //transform.DOFlip(); // 变化过程中执行该方法,则物体变化到 第二秒 时该物体的位置、比例等 //transform.DOGoto(2); //十秒内 弹跳 3次 //transform.DOJump(new Vector3(10, 10, 10), 3, 10); //停止掉当前的变化 //transform.DOKill(); // 十秒内 弹跳 3次, 局部坐标最终变化为 10, 0, 10 //transform.DOLocalJump(new Vector3(10, 10, 10), 3, 10); // 5 秒内, 局部坐标变化到 10,10,10 //transform.DOLocalMove(new Vector3(10, 10, 10), 5); // 10 秒内 X 局部坐标变换到 5 //transform.DOLocalMoveX(5, 10); // 10 秒内 Y 局部坐标变化到 5 //transform.DOLocalMoveY(5, 10); //10 秒内 Z 局部坐标变化到 5 //transform.DOLocalMoveZ(5, 10); //transform.DOLocalPath(); //5 秒内 局部旋转变化到 10,10, 10 //transform.DOLocalRotate(new Vector3(10, 10, 10), 5); // 自身朝向 坐标(10,10,10) //transform.DOLookAt(new Vector3(10, 10, 10), 5); // 5 秒内 移动到 坐标 (10,10,10) //transform.DOMove(new Vector3(10, 10, 10), 5); //10 秒内 X 局部坐标变化到 5 //transform.DOMoveX(5, 10); //10 秒内 Y 局部坐标变化到 5 //transform.DOMoveY(5, 10); //10 秒内 Z 局部坐标变化到 5 //transform.DOMoveZ(5, 10); // //transform.DOPath(); //执行该方法停止 变化 //transform.DOPause(); //transform.DOPlay(); //变化结束前调用该方法,物体回到原始位置 //transform.DOPlayBackwards(); //执行 transform.DOPlayBackwards(); 物体回到原始位置 //执行 下面方法则再次变化 //transform.DOPlayForward(); //冲压机,在 5 秒内在原始坐标和下面坐标之间,来回冲压 //transform.DOPunchPosition(new Vector3(10, 10, 10), 5); //冲压机,在 5 秒内在原始旋转和下面角度之间,来回冲压变化 //transform.DOPunchRotation(new Vector3(50, 50, 50), 5); //冲压机,在 5 秒内在原始比例和下面比例之间,来回冲压变化 //transform.DOPunchScale(new Vector3(5, 5, 5), 5); //在变化结束之前,执行该方法,则重新开始变化 //transform.DORestart(); //变化过程中执行该方法,回到原始 //transform.DORewind(); // 10 秒内 旋转角度 到 (50,50,50) //transform.DORotate(new Vector3(50, 50, 50), 5); // 10 秒内 比例变化到 (5,5,5) //transform.DOScale(new Vector3(5, 5, 5), 5); // 10 秒内 X 比例变化到 5 //transform.DOScaleX(5, 10); // 10 秒内 Y 比例变化到 5 //transform.DOScaleY(5, 10); // 10 秒内 Z 比例变化到 5 //transform.DOScaleZ(5, 10); // 10 秒内 物体 X,Y,Z 坐标在 自身-5 到 自身加 5 之间震动 //transform.DOShakePosition(10, new Vector3(10, 10, 10)); // 10 秒内, 物体 X,Y,Z 旋转角度在 自身-5 到 自身加 5 之间震动 //transform.DOShakeRotation(10, new Vector3(10, 10, 10)); // 10 秒内, 物体 X,Y,Z 比例在 自身-5 到 自身加 5 之间震动 //transform.DOShakeScale(10, new Vector3(10, 10, 10)); //在变化过程中执行该方法,停止、开始、停止、开始 //transform.DOTogglePause(); // 执行该方法,坐标立即变化为 0,5,0, 从 0,5,0 两秒移动到初始位置 //transform.DOMove(new Vector3(0, 5, 0), 2).From(); // 执行该方法,移动到相对于原始位置 6,0,2 的位置 // 如原始位置 3,2,1。 移动后位置为 3+6,2+0,2+2 即 9,2,4 //transform.DOMove(new Vector3(6, 0, 2), 2).SetRelative();

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪肉丸子~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值