当前位置:   article > 正文

Dotween动画有关记录_pathtype.catmullrom

pathtype.catmullrom

1:路径动画,给一个路径,让物体沿着路径运动,Dotween实现
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using System.Linq;
public class Dotween_demo : MonoBehaviour
{
    public Transform[] pos;
    public Transform move;
    void Start()
    {
        //使用select需要引入命名空间using System.Linq;
        var poss = pos.Select(u => u.position).ToArray();
        move.DOPath(poss, 7f, PathType.CatmullRom, PathMode.Full3D).SetEase(Ease.Linear).SetOptions(true).SetLookAt(0).SetLoops(-1,LoopType.Restart);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

有关参数解释:
PathType.CatmullRom(路径设置成曲线的)
PathType.Linear(路径设置成直线的)

(移动物体的lookat限制)
PathMode.Full3D
PathMode.Ignore

SetOptions(true)(是否闭合路径)

2: UIText的动画

void fun2()
    {
    //在5秒内显示完“abcdefghijklmn”,Text的播放动画
        text.DOText("abcdefghijklmn", 5f);
    }
  • 1
  • 2
  • 3
  • 4
  • 5

3:动画队列的执行情况
使用dotween的动画队列执行动画,就是在一个时间内执行很多动画,按照顺序将这些动画加入到动画队列中(有些动画同一时间执行,有些动画是上一个动画执行完毕后执行)

同一时间执行两个动画,有insert和join方法,两者的区别在脚本中有写到

public Transform moveA;
    public Transform moveB;
    /// <summary>
    /// dotween队列动画
    /// </summary>
   void fun3()
    {
        //A--》x移动60---2秒
        //等待1秒
        //A-->x移动到0,同时Bx移动-60----1秒
        //B-->x移动到0,1秒
        //新建一个队列
        Sequence sq = DOTween.Sequence();
        //A移动
        sq.Append(moveA.DOLocalMoveX(60, 2f));
        //等待1秒
        sq.AppendInterval(1f);
        //AB同时移动
        sq.Append(moveA.DOLocalMoveX(0, 1f));
        sq.Join(moveB.DOLocalMoveX(-60, 1f));
        //B移动
        sq.Append(moveB.DOLocalMoveX(0, 1f));
    }
    void fun4()
    {
        //A--》x移动60---2秒
        //等待1秒
        //A-->x移动到0,同时Bx移动-60----1秒
        //B-->x移动到0,1秒
        //新建一个队列
        Sequence sq = DOTween.Sequence();
        //A移动
        sq.Append(moveA.DOLocalMoveX(60, 2f));
        //等待1秒
        sq.AppendInterval(1f);
        //AB同时移动
        sq.Append(moveA.DOLocalMoveX(0, 1f));
        //insert方法,整个队列插入在3秒以后开始执行
        sq.Insert(3,moveB.DOLocalMoveX(-60, 1f));
        //B移动
        sq.Append(moveB.DOLocalMoveX(0, 1f));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

4:队列加入回调方法,两种方法,个人感觉AppendCallback比较好用一点

  //队列加入回调方法,两种方法,个人感觉AppendCallback比较好用一点
    void fun5()
    {
        Sequence sq = DOTween.Sequence();
        sq.AppendInterval(1f);
        sq.AppendCallback(() => {
            print("第一种方法,appendCallback,在上一个动画执行完毕后执行这个");
        });
        sq.InsertCallback(1f, () => {
            print("第二种方法:在整个队列执行到1f时,执行这个");
        });
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5:预添加方法 :Prepend

  //简单使用 prepend,((prepend和Append不同之处就是,append从前往后执行,prepend是从后往前执行
    void fun6()
    {
        Sequence sq = DOTween.Sequence();
        sq.Prepend(this.transform.DOScale(1, 0.2f));
        sq.PrependInterval(1f);
        sq.PrependCallback(() => {

        });
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/89833
推荐阅读
  

闽ICP备14008679号