DoTween使用

       transform.DOMove(Vector3.one, 2);

        transform.DOMoveX

        transform.DORotate(new Vector3(50,50,50)2)

        transform.DOScale(Vector3.one * 2, 2);


        //冲床运动,在当前位置震荡

        transform.DOPunchPosition(new Vector3(0, 2, 0),10,3,0f);//DOPunchRotation  DOPunchScale

     DOPunchPosition(this Transform target, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false);

        参数:

            punch 冲孔的方向和强度;  

            duration:持续时间(会随着时间振幅慢慢停止)

            vibrato :振动频率

            elasticity :弹性0~1(1 表示在目标点和相对物体反向的目标点之间振幅,0表示只在物体坐标点到目标点之间振幅);

            snapping:弹性模量,以整数值移动距离;

            transform.DOShakePosition(2, 11, 10, 2,fadeOut:true);

        //   strength:振动强度

        //  vibrato:振动频率

        //  randomness:随机几个方向,0代表一个方向振动

        //  snapping:弹性模量,每帧以整数值移动距离;

        //  fadeOut:true=结束时平滑过渡到静止,否则生硬停止(都会回到物体初始化坐标点,true时面板显示xyz值不正常)



        这两个一起执行指挥调用下面这个:

        transform.DOMove(Vector3.one * 2, 1);

        transform.DOMove(Vector3.one * -2, 1);


       用混合的方法调用,会移动到两者之和的Vector3坐标(-1,-1,-1)

        transform.DOBlendableMoveBy(Vector3.one , 1);

        transform.DOBlendableMoveBy(Vector3.one * -2, 1);


        Material matl = GetComponent<MeshRenderer>().material;

        matl.DOColor(Color.red, 2);//修改的是 shader里 _Color 属性值

        matl.DOColor(Color.red, "_TintColor", 2);//制定修改属性名的shader值


        //透明度为0

        //matl.DOColor(Color.clear, "_TintColor", 2);//透明度为0

        matl.DOFade(0, "_TintColor", 2);//透明度为0


        //渐变

            public Gradient gradient;

         // matl.DOGradientColor(gradient, 2);

        matl.DOGradientColor(gradient, "_TintColor", 2);

        //matl.DOGradientColor(gradient, "_TintColor", 2);

        //  matl.DOOffset(new Vector2(1, 1), 2);//偏移效果  材质偏移

        // matl.DOVector(Color.clear, "_TintColor", 2);//变透明


混合材质颜色

    matl.DOBlendableColor(Color.red, "_TintColor", 2);

        matl.DOBlendableColor(Color.green, "_TintColor", 2);


摄像机:

Camera camera = this.GetComponent<Camera>();

        //camera.DOAspect(0.2f, 2);    //设置摄像机区域长宽比,以小的值为基准不变,改变更大的值大小

        // camera.DOColor(Color.red, 2);//solidcolor  改变

        //camera.DONearClipPlane(1.4f,2);//近视距

        //camera.DOFarClipPlane(900,2);//远视距

        //camera.DOFieldOfView(100, 2);//透视模式视距大小

        // camera.DOOrthoSize(6, 2);//正交模式视距大小

        // camera.DORect(new Rect(0, 0, 0.5f, 0.5f), 2);//摄像机区域大小按比例(用于多摄像机)

      //  camera.DOPixelRect(new Rect(0, 0, 300, 500), 2);//摄像机区域大小按像素(用于多摄像机)

        camera.DOShakePosition(2,6,30,55);//摄像机振动 fade out (true)平滑返回原坐标或者生硬突兀返回


文字:

     text.DOText("撒旦撒旦撒考虑到啥看到啥看到了啥都傻了都杀了萨拉的杀戮的拉萨的杀戮的杀戮", 5).SetEase(Ease.Linear);//SetEase(Ease.Linear) 匀速展示


动画队列:

{ //序列动画连续执行动画

        Sequence sequence = DOTween.Sequence();

        //sequence.Append(transform.DOMove(new Vector3(10, 0, 0), 2));//0-2

        //sequence.AppendCallback(AppendCallBack);//插入回调三种方式

        //sequence.Join(transform.DOScale(Vector3.one * 2, 2));

        //sequence.AppendInterval(2);//停止2秒  2-4

        //sequence.Append(transform.DOMove(new Vector3(0, 10, 0), 2));//4-6

        //sequence.Join(transform.DOScale(Vector3.one, 2));

        //sequence.Insert(0, transform.DOMove(-new Vector3(10, 0, 0), 2));//在0~2秒插入一个动画会替换掉第一个append相同的动画

        //sequence.Insert(7, transform.DOMove(-new Vector3(10, 0, 0), 2));//在7秒插入一个动画

        //sequence.Insert(0,transform.DOScale(Vector3.one*2,2));//0-2秒位移的同时放大.等同于上面join

        //sequence.Insert(4, transform.DOScale(Vector3.one, 2));//4-6秒位移的同时缩小.等同于上面join

        //sequence.PrependInterval(1.5f);

        //sequence.Prepend(transform.DOMove(-new Vector3(10, 0, 0), 2));//预添加, 于append相反的顺序  后进先出的栈结构

        //sequence.PrependCallback(PrependCallback);//插入回调三种方式

        //sequence.InsertCallback(2,InsertCallBack);//插入回调三种方式


//SetLoops int loops(重复次数-1代表无限), LoopType loopType(Restart 从头重复,Incremental增长即追加式,Yoyo来回重复)

        // transform.DOMove(Vector3.one, 1).SetLoops(3, LoopType.Restart);//

        //直接设置循环参数效果同上

        //TweenParams tp = new TweenParams();

        //tp.SetLoops(5, LoopType.Incremental);

        //transform.DOMove(Vector3.one, 1).SetAs(tp).SetAutoKill();

        //From()代表DOMove的endValue为起点 移动到Transform.pos

        //From(True)代表当endValue和Transform.pos一致时,从这两个方向点相加的方向移动到endValue,无参数(From())则不移动

        //From(True) endValue,Transform.pos都为Vector3.one,则从(2,2,2)移动

        //transform.DOMove(-2*Vector3.one, 1).From();//

        //transform.DOMove(Vector3.one, 1).SetDelay(2);//延迟2s移动

        // transform.DOMove(Vector3.one, 10).SetSpeedBased();//SetSpeedBased() 基于速度移动 Domove内的duration代表速度而不是时间了

        //transform.DOMove(Vector3.one, 10).SetSpeedBased(false);//SetSpeedBased(false) Domove内的duration代表是时间

        //SetRecyclable() 设置为可回收的

        //SetId 方便静态调用

        //transform.DOMove(Vector3.one, 10).SetId("startAnim").SetRecyclable();

        //DOTween.Play("startAnim");

        //SetRelative()增量运动 在原有的位置上增长  transform.pos 和endValue一致时也移动

        //transform.DOMove(Vector3.one, 10).SetRelative();

        //SetUpdate UpdateType: update fixedupdate lateupdate

        //参数二:isIndependentUpdate  true表示不受Time.timeScale 影响

        //Time.timeScale = 2;

        //transform.DOMove(Vector3.one, 5).SetUpdate(UpdateType.Fixed, true);

        //设置运动曲线

        //transform.DOMove(Vector3.one, 5).SetEase(Ease.Linear);//匀速

        //transform.DOMove(Vector3.one, 5).SetEase(Ease.Flash,10,-1);//振幅10,第三参数-1先慢后快 0正常.1先快后慢

        //自定义曲线

        // transform.DOMove(Vector3.one, 5).SetEase(ac);

        //函数曲线

        //transform.DOMove(Vector3.one, 5).SetEase(MyEaseFun);

private float MyEaseFun(float time, float duration, float overshootOrAmplitude, float period)

    {

        return time / duration;//当前时间除以持续总时间

    }


//设置回调

        //transform.DOMove(Vector3.one, 3).OnComplete(() => { Debug.LogError("OnComplete"); });

        //transform.DOMove(Vector3.one, 3).OnKill(() => { Debug.LogError("OnKill"); });

        //transform.DOMove(Vector3.one, 3).SetLoops(3).OnStepComplete(() => { Debug.LogError("OnStepComplete"); }); //循环完成每步回调

        //transform.DOMove(Vector3.one * 10, 5).OnStart(() => { Debug.LogError("OnStart"); }).SetAutoKill(false); //循环完成每步回调

        // transform.DOGoto(2,false);//跳到第几秒,参数2:是否继续播放

        //--------------------------延时配合-------------------------------------------------------------------------------------------------------------------------//

        //await Task.Delay(1000);

        //以下方法需开启延迟 不然有些看不出效果

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

        //transform.DORewind();//回到原位置

        //transform.DOSmoothRewind();//平滑回到原位置

        // DOTween.To(() => myVector, x => myVector = x, new Vector3(3, 4, 8), 1);

        // transform.DOFlip();//原路径返回

        // transform.DOPlayForward();//将该tween动画对象所有未销毁的tween 播放 需要设置 SetAutoKill(false)

        //transform.DOPlayBackwards();//同上  反向播放  需要设置 SetAutoKill(false)

        //开关模式 停止/播放

        //transform.DOTogglePause();//停止

        //await Task.Delay(1000);

        //transform.DOTogglePause();//播放

        //--------------------------延时配合-------------------------------------------------------------------------------------------------------------------------//

        //var list = DOTween.PausedTweens();

        //var list2 = DOTween.PlayingTweens();

        //Debug.LogError($"list:{list.Count}");

        //Debug.LogError($"list2:{list2.Count}");

        //DOTween.TweensById("ID", true);//按id找tweens  true表示正在播放

        //DOTween.TweensByTarget(transform, true);//按对象找tweens  true表示正在播放

        //DOTween.IsTweening(transform, true);//当前对象是否正在播放动画  true表示正在播放

        //DOTween.TotalPlayingTweens();//当前对象播放多少tween 延时也算

        //--------------------------时间修改-------------------------------------------------------------------------------------------------------------------------//

      // var tweener = transform.DOMove(Vector3.one, 2).SetLoops(2).SetDelay(2);

        //await Task.Delay(1000);

        //Debug.LogError($"tweener.fullpos:{tweener.fullPosition}");//输出当前动画的播放到第几秒

        //Debug.LogError($"tweener.CompletedLoops:{tweener.CompletedLoops()}");//输出当前动画的播放到第几秒

        //Debug.LogError($"tweener.Delay:{tweener.Delay()}");//输出当前动画延迟时间

        //Debug.LogError($"tweener.Delay:{tweener.Duration(true)}");//动画持续时间 true包含循环2X2s,false 不包含 2s (延时时间不算在动画内)

        //                                                          // tweener.fullPosition = 2;//直接到动画的第二秒

        //Debug.LogError($"tweener.Elapsed:{tweener.Elapsed(true)}");//动画已经执行的时间 true包含循环2X2s,false 不包含 2s(延时时间不算在动画内)

        //Debug.LogError($"tweener.ElapsedDirectionalPercentage:{tweener.ElapsedDirectionalPercentage()}");//动画完成百分比

        //Debug.LogError($"tweener.ElapsedPercentage:{tweener.ElapsedPercentage(true)}");//动画完成百分比 是否包含循环

      //  tweener.Loops();//循环次数获取

                        //--------------------------时间修改-------------------------------------------------------------------------------------------------------------------------//

        //--------------------------协程-------------------------------------------------------------------------------------------------------------------------//

          tweener = transform.DOMove(Vector3.one, 2).SetLoops(2).SetDelay(2);

        StartCoroutine(WaitFunc());

        //--------------------------协程-------------------------------------------------------------------------------------------------------------------------//

    }

    IEnumerator WaitFunc() {

        // yield return tweener.WaitForCompletion();//完成动画后

        // yield return tweener.WaitForElapsedLoops(2);//完成2次循环后

    //  yield return tweener.WaitForKill();//销毁后

        yield return tweener.WaitForPosition(1.5f);//动画执行1.5s后

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容