Unity——DoTween插件

这篇具有很好参考价值的文章主要介绍了Unity——DoTween插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

using DG.Tween

DoTween的一些用法

移动动画

        //使得物体移动,第一个参数类型是Vector3,代表物体要移动到的世界坐标,第二个参数是移动到该位置所需要的时间
        transform.DOMove(new Vector3(5, 9, 1), 6);
//使得物体在x轴进行移动,第一个参数是移动到的x的位置,以自身坐标
        transform.DOLocalMoveX(9, 7);
   //blend会对物体的运动进行一个累加第一个参数,需要累加的数,第二个参数是所需要的时间
        transform.DOBlendableMoveBy(Vector3.one, 2);

旋转 

 //使得物体进行旋转,第一个参数是Transform里的Rotation的值,第二个是所需要的值
        transform.DORotate(new Vector3(5, 9, 1), 4);

Unity——DoTween插件

  //使得物体进行旋转,以自身为坐标轴,第一个参数是Transform里的Rotation的值,第二个是所需要的值
        transform.DOLocalRotate(new Vector3(4, 8, 9), 4);
  //使得物体进行旋转,以世界坐标系,第一个参数是四元数,第二个是所需要的时间的值
        transform.DORotateQuaternion(Quaternion.Euler(40, 8, 5), 7);

尺寸

`

  //使得物体进行旋转,以世界坐标系,第一个参数是四元数,第二个是所需要的时间的值
        transform.DORotateQuaternion(Quaternion.Euler(40, 8, 5), 7);
 使得物体进行扩大,第一个参数是扩大的值,第二个值是所需要的时间
        //transform.DOScale(new Vector3(3, 4, 5), 8);
        //使得物体到达参数一的位置就进行往返运动,第一个参数是所能到达的位置
        //第二个参数是所需要的时间
        //第三个参数是往返的次数
        //第四个参数是值越大,反方向给的力就越大
        transform.DOPunchPosition(new Vector3(0, 5, 0), 5, 2, 0.5f);

震动

  //使得物体进行振动,第一个参数是震动的时间,第二参数是给的震动的方向,第三个参数是震动的幅度
        transform.DOShakePosition(1, Vector3.forward, 20, 90);

材质

 //改变材质的颜色
        Material material = GetComponent<MeshRenderer>().material;
        material.DOColor(Color.red, 5);
   //实现渐变,第一个参数是渐变条,需要提前声明public Gradient gradient;,第二个参数是时间
        material.DOGradientColor(gradient, 5);

Unity——DoTween插件

 //改变贴图位置
        material.DOOffset(Vector3.one,0);
 //将两个材质的颜色混合在一起
        material.DOBlendableColor(Color.red, 5);
        material.DOBlendableColor(Color.yellow, 5);

摄像机

         //改变摄像机的宽高比,第一个参数是宽高之比,第二个参数是所达成所需要的时间
        camera.DOAspect(0.5f, 5);

        //改变摄像机的背景颜色
        camera.DOColor(Color.black, 5);

        //改变摄像机拍摄内容的角度,第一个参数是角度大小,第二个参数是时间
        camera.DOFieldOfView(2, 5);

        //改变正交摄像机拍摄内容的角度,第一个参数是角度大小,第二个参数是时间
        camera.DOOrthoSize(10, 7);

        //实现分屏的两种方式参数一
        //第一个参数都是缩小之后的位置
        camera.DOPixelRect(new Rect(360, 540, 360, 540), 2);
        //第二个参数是按比例缩小
        camera.DORect(new Rect(360, 360, 360, 360), 0.5f);

        
        //摄像机晃动,第一个参数是晃动的时间,第二个参数是晃动的力,第三个参数是晃动的方向
        camera.DOShakePosition(2, 10, 20);

Text

        Text text = GetComponent<Text>();
        //逐字输出,第一个参数是输出的文本,第二个参数是输出的时间,.SetEase(Ease.Linear)代表匀速输出
        text.DOText("46545645646464654", 5).SetEase(Ease.Linear);

队列

          //构建一个队列
        Sequence quence = DOTween.Sequence();
        //添加事件在队列之中
        quence.Append(transform.DOMove(Vector3.one, 2));
        //加入执行该事件,和之前一个事件一起执行
        quence.Join(transform.DOScale(new Vector3(3, 4, 5), 5));
        //让队列暂停1s
        quence.AppendInterval(1);
        //运行完上个事件就执行该方法
        quence.AppendCallback(InsertCallBack03);
        quence.Append(transform.DOMove(new Vector3(1, 0, 0), 2));

        //插入事件,该插入的事件是占用了插入的事件的事件,也可以在超出的事件上插入事件
        //第一个参数是插入的事件,第二个参数是插入的事件
        quence.Insert(0, transform.DOMove(-Vector3.one, 1));

        //相当于栈反向的执行顺序,会优先执行这部分的事件
        quence.PrependInterval(2);
        quence.Prepend(transform.DORotate(new Vector3(5, 9, 1), 4));
        //最开始的时候调用该函数
        quence.PrependCallback(InsertCallBack01);

        //在指定的事件调用该函数,第一个参数是调用的时间,第二个参数是调用的参数名字
        quence.InsertCallback(6, InsertCallBack02);
    }

    public void InsertCallBack01()
    {
        Debug.Log(1);
    }

    public void InsertCallBack02()
    {
        Debug.Log(2);
    }

    public void InsertCallBack03()
    {
        Debug.Log(3);
    }

设置参数

         //.SetLoops表示循环该事件,里面的第一个参数代表循环的次数,当为-1的时候代表无线循环,第二个参数为LoopType.Incremental代表累加的一个循环,每次循环完不回到之前的位置
        transform.DOMove(new Vector3(2, 5, 3), 5).SetLoops(10,LoopType.Incremental); 

         //使得动画在运行结束后停下来
        transform.DOMove(new Vector3(2, 5, 3), 5).SetLoops(3,LoopType.Incremental).SetAutoKill(true); 
       //使得动画反向进行运动,而且从目标点运动回来
        transform.DOMove(new Vector3(2, 5, 3), 5).SetLoops(3,LoopType.Incremental).From(); 
        //动画播放完成之后暂停多少时间
        transform.DOMove(new Vector3(2, 5, 3), 5).SetLoops(3,LoopType.Incremental).SetDelay(1); 

        //当使用了该参数的时候,事件的第二个参数就变成了运动到目标点的速度
        transform.DOMove(new Vector3(2, 5, 3), 5).SetSpeedBased(true); 


        //.SetId()代表给该事件一个标记,DOTween.Play(),代表去dotween的缓冲池去调用,这样做可以优化性能
         transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetId(0);
        DOTween.Play(0);


        //当.SetRelative(true)时,这个事件的第一个参数的目标地点位置就变为了一个运动的方向和长度,可以进行一个累加
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetRelative(true);

         //这个设置参数代表该事件不会受到unity事件的影响
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetUpdate(UpdateType.Normal,true);

运动曲线

缓动函数速查表 (xuanfengge.com)


        //设置曲线的运动函数
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetEase(Ease.);

Unity——DoTween插件


        //当旋转运动曲线为flash的时候再加参数代表他来回闪烁,如果第三个参数大于0该物体的活动范围会渐渐变小,如果等于0会不变,小于0会给目标点一个力
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetEase(Ease.Flash,3);

 //运动曲线
    public AnimationCurve curve;
        //自定义运动曲线
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetEase(curve);

Unity——DoTween插件

         //调用自己编写的曲线
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).SetEase(EaseFun);


    public float EaseFun(float time,float duartion,float overshootOrAmlitude,float period)
    {
        return time / duartion;
    } 

回调函数

         //动画被杀死的执行函数
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnKill(() => { Debug.Log(1); });

        //开始运行的时候执行函数
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnPlay(() => { Debug.Log(1); });

        //完成的时候执行函数
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnComplete(()=> { Debug.Log(1); });

        //暂停的时候执行
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnPause(()=> { Debug.Log(1); });

        //第一次运行动画的时候执行
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnStart(()=> { Debug.Log(1); });

        //循环的时候执行
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnStepComplete(()=> { Debug.Log(1); });

        //在这个动画的帧内都会被执行
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnUpdate(()=> { Debug.Log(1); });

        //在动画重新播放的时候会被执行
        transform.DOBlendableMoveBy(new Vector3(2, 5, 3), 5).OnRewind(()=> { Debug.Log(1); });

控制函数

          //暂停
        transform.DOPause();

        //开始
        transform.DOPlay();

        //重新播放
        transform.DORestart();

        //回到起始位置(很快
        transform.DORewind();

        //回到起始位置(很慢
        transform.DOSmoothRewind();

        //杀死动画
        transform.DOKill();

        //反转动画,把起始点变为目标点
        transform.DOFlip();

        //代表跳转到动画第几秒
        transform.DOGoto(2,true);

        //反向播放动画
        transform.DOPlayBackwards();

        //正向播放动画
        transform.DOPlayForward();

        //在运行状态下运行就是暂停,在暂停状态下运行就是播放
        transform.DOTogglePause();

获取数据

         //获得所有的暂停的动画
        var list = DOTween.PausedTweens();

        //获得所有在播放的动画
        var list1 = DOTween.PlayingTweens();

        //寻找Id为该字符串的动画,第二个参数代表获取当前播放的动画
        var list2 = DOTween.TweensById("ID",true);

        //返回的是该动画上有什么缓冲下来的动画都会被收集下来
        var list3 = DOTween.TweensByTarget(transform, true);

        //寻找这个动画是否有动画,第二个参数为true时,代表寻找该动画是否正在播放
        var list4 = DOTween.IsTweening("id",true);

        //寻找所有正在播放的动画,包括延迟动画
        var list5 = DOTween.TotalPlayingTweens();

        //控制动画的播放的时间的指针
        transform.DOMove(Vector3.one, 5).fullPosition = 0;

        var tween = transform.DOMove(Vector3.one, 5);

        //获取到该动画的循环次数
        tween.CompletedLoops();

        //获取动画的延迟时间
        tween.Delay();

        //动画的持续时间,参数代表是否包括循环的时间
        tween.Duration(true);

        //动画的播放的时间,参数代表是否包括循环的时间
        tween.Elapsed();

        //返回的是进程的百分比
        tween.ElapsedDirectionalPercentage();

        //返回的是动画的已用的百分比,参数代表是否包括循环的时间
        tween.ElapsedPercentage();

        //判断动画是否是反向的
        tween.IsBackwards();

        //判断动画是否已经完成
        tween.IsComplete();

携程


        tween = transform.DOMove(Vector3.one, 2).SetLoops(3);
        StartCoroutine(Wait());
    

    private IEnumerator Wait()
    {
        //等动画播放完再执行下面的语句
        yield return tween.WaitForCompletion();
        Debug.Log(0);

        //等待动画循环到第几次执行下面的语句
        yield return tween.AsyncWaitForElapsedLoops(2);
        Debug.Log(1);

        //动画被杀时执行下面的语句
        yield return tween.WaitForKill();
        Debug.Log(2);

        //动画执行到该时间才会继续执行下面的方法
        yield return tween.WaitForPosition(1.5f);
        Debug.Log(3);

        //动画重新播放的时候执行下面的方法
        yield return tween.WaitForRewind();
        Debug.Log(4);

        //动画开始执行的时候调用
        yield return tween.WaitForStart();
        Debug.Log(5);
    }

路劲动画

using System.Linq;

     //是将数组存放在positions里面
        var positions = postionList.Select(u => u.position).ToArray();
        //第一个参数是存放位置的数组,第二个参数是运行的时间,第三个参数是规定点之间是直线运行还是曲线运行
        transform.DOPath(positions, 2);

 Unity——DoTween插件文章来源地址https://www.toymoban.com/news/detail-510963.html

          //将第一个位置和最后一个位置连起来,.SetOptions()的第一个参数是是否将首尾连接,第二个参数是锁定轴
        //SetLookAt()里面的参数代表看向的位置,当参数是0该物体一直看向路径的前方,朝向针对运动方向的百分比从0-1 
        transform.DOPath(positions, 5,PathType.CatmullRom,PathMode.Full3D,50).SetOptions(true).SetLookAt(0);

到了这里,关于Unity——DoTween插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Unity 3d] 插件---- DoTween 动画方法调用及执

    一、移动和旋转(一到四主要应用于Transform的方法) 1、使用DoTween首先要引用命名空间 Using DG.Tweening; 2、transform.DOMove(目标位置,所花费的时间/s) //移动方法 3、transform.DoLocalMoveX(目标位置,所花费的时间)//单一的移动方法 4、transform.DoLocalMove()//移动自己的局部坐标 5、transfo

    2024年02月09日
    浏览(52)
  • Unity Dotween插件物体、ui的移动 旋转 缩放效果

    Unity Dotween插件物体、ui的移动 旋转 缩放效果 #脚本应用命名空间 using DG.Tweening; ##让游戏物体平移 //参数一:要移动到的位置 //参数二:动画完成要多少秒 transform.DOMove(new Vector3(1,3, 8.08f),5.5f); ##让游戏物体旋转 //参数一:要旋转成的样子的坐标 //参数二:旋转动画多少秒完成 trans

    2024年02月01日
    浏览(49)
  • 使用DoTween插件在Unity中实现物体或场景的振动效果

    在Unity中,我们可以使用DoTween插件来实现物体或场景的振动效果。DoTween是一个功能强大的插件,可以简化动画的创建和管理过程,并提供了丰富的插值和缓动函数,使得振动效果的实现变得更加容易。 首先,我们需要确保已经安装了DoTween插件,并将其导入到Unity项目中。接

    2024年04月17日
    浏览(71)
  • Unity开发使用DOTween插件实现ui组件慢慢消失和慢慢出现

    有时候做游戏提示的话,需要一个慢慢出现慢慢消失的效果,Unity开发使用DOTween插件实现ui组件慢慢消失和慢慢出现非常的方便。 做一个简单的小笔记,也分享在csdn上,直接上步骤 这里需要导入DOTween插件(简单提一嘴)。  注意点来了,提示Text文本依托一个image做为父类(这

    2024年02月12日
    浏览(80)
  • Unity Dotween插件的运动曲线(Ease)介绍Ease选项Ease效果示例以及C#修改动画曲线功能

    我们在制作动画时经常使用这个Dotween插件,在移动、旋转、透明度等等参数的控制都可以使用该插件,而且在这个插件上的控制动画可以设置曲线,内置的曲线有这些: 以InOutSine的曲线进行往右移动: 效果是这样的: 能看出开始是从0提速,最后是慢慢减速至0的效果。 4个

    2024年02月01日
    浏览(72)
  • unity的C#学习——命名空间的定义与访问、using语句的常见用法

    在C#中,命名空间(Namespace)是一种 将类和其他相关类型组织在一起的方式 。可以将命名空间看作是一个容器,用于管理和组织类和其他类型。通过将相关的类型组织在一起,可以使代码更加清晰和易于维护。 命名空间的主要目的是为了避免名称冲突,使得开发人员可以 使

    2024年02月11日
    浏览(54)
  • Unity3d2021版本 使用DOTween插件报错The type name ‘Rigidbody2D‘ could not be found in the namespace ‘****‘问题

    最近在升级项目至2021版本的过程中发现了诸多这种问题,今天就遇到这样的报错: AssetsPluginsDemigiantDOTweenModulesDOTweenModulePhysics2D.cs(143,18): error CS1069: The type name ‘Rigidbody2D’ could not be found in the namespace ‘UnityEngine’. This type has been forwarded to assembly ‘UnityEngine.Physics2DModule,

    2024年02月11日
    浏览(61)
  • UnityUI动态效果插件Dotween

    DoTween是unity的动画特效插件 它的核心在于实现了【数值的缓动】 Dotween.To方法 是dotween实现数值缓动的基础方法,其他方法都是基于此方法的扩展 Dotween.To(get,set,targetvalue,duration); get:                  获取传入值的引用 set:                  通过传入值的引用,对这个值

    2024年02月05日
    浏览(42)
  • Unity中的一些PropertyAttribute(如[Header(“xxx“)])的用法与详细使用案例

     该代码用于在Inspector面板上给之后定义的puclic变量加一个标题.具体用法如下  使用之后可以看出在Inspector面板上Header之下的变量前都多出了一个标题,可以方便我们在图形化界面管理大量拥有相同变量的单位. 可以用于在Inspector上形成一个空隙,可以添加变量 如[Space(10)] 用法

    2024年02月15日
    浏览(38)
  • unity中的DG.Tweening详解

    DG.Tweening是一个Unity插件,提供了一种简单而强大的方法来创建Tween动画。它可以用来创建各种效果,例如移动、旋转、缩放、淡入淡出等等。DG.Tweening提供了丰富的参数选项,使得你可以轻松地控制Tween动画的各个方面。 以下是DG.Tweening的主要方法和参数: 这个方法可以用来

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包