Unity插件-DoTween

  1. 单个动画
// 缓动移动
transform.DOMove(new Vector3(x, y, 0), 0.5F).SetEase(Ease.InOutSine);
transform.DOLocalMove(new Vector3(x, y, 0), 0.5F).SetEase(Ease.InOutSine);
// 相对于原本位置的位移(offset)
transform.DOBlendableLocalMoveBy(Vector3.one, 2);
// 旋转
transform.DORotate(new Vector3(0, 0, -0), 0.5F).SetEase(Ease.InOutSine);
// 变为红色
gameObject.GetComponent<Image>().DOColor(Color.red, 2);
// 变为透明
gameObject.GetComponent<Image>().DOFade(0, 2)
// 多颜色渐变动画
// 第二个参数:Shader的颜色名称,可以在shader中Edit Shader查看名字
// 在DOColor和DOFade中同样适用
GetComponent<MeshRenderer>().material.DOGradientColor(Gradient, "_Color", 2);
// 四元向量(如颜色)修改动画
GetComponent<MeshRenderer>().material.DOVector(Color.blue, "_Color", 2);
  1. 连续动画
// 新建动画集
Sequence se = DOTween.Sequence();
// 添加动画
se.Append(Tween);
// 添加动画,该动画会与该行之上的Append一起执行
se.Join(Tween);
// 插入动画(秒)
se.Insert(0, Tween);
// 等待
se.AppendInterval(2)
// 调用函数
se.AppendCallback(oneCallBack)
// 某个时间点调用函数
se.InsertCallback(2, oneCallBack)
// 开始
se.Play();
// 暂停
se.Pause();       
// 在开始动画前预运行
se.PrependInterval();
se.PrependCallback();
se.Prepend();
  1. SetXXX()设置参数

    1. SetEase 设置运动曲线
    可用入参描述
    EaseEase函数
    AnimationCurve定制曲线
    1. SetLoops 设置动画循环次数,-1为无限循环。可加入入参 LoopType 设定循环方式
    LoopType类型描述
    Yoyo正播之后倒播
    Incremental重播时不重置位置
    Restart重播时重置位置
    1. SetDelay 设置等待时间
    2. SetAutoKill 是否自动回收
    3. SetId 设置ID
    DOTween.Pause(ID);// 暂停指定ID
    
    1. SetRelative 设置向量不是目标位置。而是偏移的大小
    2. SetUpdate 设置更新类型,是否不受Time.timeScale影响
    SetUpdate(UpdateType.Normal, true);
    
    1. SetLink将tween与对象关联,一但对象被清除,dotween将停止(或给到枚举的一种)。
  2. DOTween.To万能动画

Vector3 v3;
DOTween.To(() => v3, x => v3 = x, new Vector3(10, 10, 10), 10F);
  1. 动画的倒播
    想要倒播动画,需要设置动画对象的 SetAutoKill(false),然后运行 DOPlayBackwards()
    示例:
public Transform obj;
public bool flag;
private void Start()
{
    // 新建动画
    Tweener tweener = obj.DOMove(new Vector3(1, 1, 1), 1).SetEase(Ease.InBack);
    // 不会自动销毁
    tweener.SetAutoKill(false);
    // 先不播放这个动画
    tweener.Pause();
    // 播放一次
    // obj.DOPlayForward();
}
public void Click()
{
    if (flag)
    {
        // 正播
        obj.DOPlayForward();
    }
    else
    {
        // 反播
        obj.DOPlayBackwards();
    }
    flag = !flag;
}
  1. From动画
    为DoTween动画后追加一个From(),来让动画变成从目标坐标移动到当前坐标
    From()存在入参,如果传入true,那么动画的坐标从世界坐标改为相对坐标
    例:
obj.DOMove(new Vector3(1, 1, 1), 1).From();
  1. OnComplete、OnStart回调
    OnComplete()可以让动画在播放结束时,添加一个额外的回调函数
    OnStart()可以让动画在播放开始时,添加一个额外的回调函数
    例:
int value = 2;
obj.DOLocalMove(new Vector3(1, 1, 1), 1).OnComplete(() =>
{
    Debug.Log(value);
});

其他的还有onKillOnStart(第一次)、onPlay(第一次和暂停结束后)、onPauseonRewind(重新播放)

  1. DOText()文字动画
    为文字添加逐一显示的动画
    例:
txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
  1. DOText()文字动画
    为文字添加逐一显示的动画
    例:
txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
// 时间,振幅,频率,振动转向范围, 位移为整数, 是否采用缓动动画
obj.DOShakePosition(2, new Vector3(1, 1, 0), 10, 90, false, true);
  1. DOPunchPosition()冲击动画
    让物体向一个方向冲击出去然后反弹回来。
 // 冲击 -> 方向、持续时间、次数(频率)、反弹超出距离
obj.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.15f);
  1. 摄像机动画
Camera camera = Camera.main;

// 修改宽高比(改宽度)
camera.DOAspect(0.5f, 2);

// 修改背景颜色
camera.DOColor(Color.green, 2);

// 修改摄像机近切面和远切面的值
camera.DONearClipPlane(0.5f, 2);
camera.DOFarClipPlane(0.5f, 2);

// 透视模式 摄像机视野
camera.DOFieldOfView(0.5f, 2);

// 正交模式 摄像机大小
camera.DOOrthoSize(0.5f, 2);

// 摄像机镜头在界面中显示的位置与大小
camera.DORect(new Rect(.1f, .2f, .3f, .4f), 2);

// 时间,振幅,频率,振动转向范围, 是否采用缓动动画
camera.DOShakePosition(2, new Vector3(1, 1, 0), 10, 90, false);
  1. 控制函数
// 逆播回到原位置
transform.DOSmoothRewind();
// 维持当前速度回到原位置
transform.DORewind();
// 播放
transform.DOPlay();
// 暂停
transform.DOPause();
// 切换暂停和播放的状态
transform.DOTogglePause();
// 跳转时间点、跳转后是否继续播放
transform.DOGoto(0.2f, true);
// 倒播
transform.DOPlayBackwards();
  1. 获取动画
// 获取所有播放的动画
var list = DOTween.PlayingTweens();
// 获取所有暂停的动画
list = DOTween.PausedTweens();
// 根据ID获取动画
list = DOTween.TweensById("tMove");
// 根据对象获取动画,是否仅在其播放时候获取到
list = DOTween.TweensByTarget(transform, true);
  1. 获取数据
var tweener = transform.DOMove(Vector3.zero, 2).SetLoops(3);

// 设置动画播放的时间点
tweener.fullPosition = 0;
// 动画循环的次数
Debug.Log( tweener.CompletedLoops() );
// 动画播放时间,如果循环是否累计播放时间
Debug.Log( tweener.Elapsed(true) );
// 动画播放的百分比
Debug.Log( tweener.ElapsedDirectionalPercentage() );
// 包括循环、动画播放的百分比
Debug.Log( tweener.ElapsedPercentage() );
// 判断动画是否反向
Debug.Log( tweener.IsBackwards() );
// 判断动画是否活动
Debug.Log( tweener.IsActive() );
// 判断动画是否完成
Debug.Log( tweener.IsComplete() );
// 判断动画是否初始化
Debug.Log( tweener.IsComplete() );
// 判断动画是否正在播放
Debug.Log( tweener.IsPlaying() );
// 判断动画循环次数
Debug.Log( tweener.Loops() );
  1. 携程
Tweener tweener;
void Start()
{
    tweener = transform.DOMove(Vector3.zero, 2).SetLoops(3);
    StartCoroutine(Wait());
}

IEnumerator Wait()
{
    yield return tweener.WaitForElapsedLoops(2);
    Debug.Log("循环了两次");
}

IEnumerator Wait()
{

    yield return tweener.WaitForPosition(3);
    Debug.Log("过了3秒");
}
  1. 路径
public Transform[] pointList;
void Start()
{
    Vector3[] positionList = new Vector3[pointList.Length];
    for (int i = 0; i < pointList.Length; i++)
        positionList[i] = pointList[i].position;
    // v3集合、动画时间、路径是圆滑还是线性、朝向、点数量(对于圆滑)
    transform.DOPath(positionList, 8, PathType.CatmullRom, PathMode.Full3D, 50)
        // 是否回路、路径在哪个轴 
        .SetOptions(true, AxisConstraint.None)
        // 设定朝向: 点
        // .SetLookAt(new Vector3(0, 0, 0));
        // 设定朝向: 路径前方(0)->路径后方(1f)
        .SetLookAt(0);
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以回答你关于UnityDOTween插件的问题。 首先,DOTween插件是用于制作Tween动画的工具,可以轻松地创建动画效果。下面是回答你的问题: 1. 设置参数 在使用DOTween插件创建Tween动画时,可以设置很多不同的参数,如持续时间、延迟时间、循环次数等。这些参数可以通过Tween对象的方法进行设置,例如: ```csharp //创建一个Tween对象 var tween = transform.DOMove(Vector3.zero, 1f); //设置Tween对象的参数 tween.SetDelay(0.5f); //设置延迟时间为0.5秒 tween.SetLoops(-1, LoopType.Yoyo); //设置无限循环,并且在每次循环结束时反转Tween对象的运动方向 ``` 2. Ease曲线 Ease曲线是用于控制Tween动画的运动方式,可以使Tween对象的运动变得更加平滑或者更加突然。DOTween插件提供了很多内置的Ease曲线,也可以自定义Ease曲线。在创建Tween对象时,可以通过传递Ease曲线的枚举值或者自定义的Ease曲线函数来设置Tween对象的Ease曲线,例如: ```csharp //使用Ease枚举值设置Tween对象的Ease曲线 var tween = transform.DOMoveX(5f, 1f).SetEase(Ease.InOutQuad); //设置Tween对象的Ease曲线为InOutQuad //使用自定义Ease曲线函数设置Tween对象的Ease曲线 var tween = transform.DOMoveX(5f, 1f).SetEase((t) => Mathf.Lerp(0f, 1f, t)); //设置Tween对象的Ease曲线为自定义的线性插值函数 ``` 3. 回调函数 回调函数是在Tween动画运动到指定位置或者完成一次循环时调用的函数。可以通过Tween对象的OnComplete、OnStepComplete、OnKill等方法设置Tween对象完成时需要调用的回调函数,例如: ```csharp //设置Tween对象完成时需要调用的回调函数 var tween = transform.DOMoveX(5f, 1f).OnComplete(() => Debug.Log("Tween completed!")); //设置Tween对象完成时需要输出日志信息 //设置Tween对象每次循环完成时需要调用的回调函数 var tween = transform.DOMoveX(5f, 1f).SetLoops(2).OnStepComplete(() => Debug.Log("Tween loop completed!")); //设置Tween对象每次循环完成时需要输出日志信息 ``` 4. 动画控制函数 动画控制函数是用于控制Tween动画的播放、暂停、重置等操作的函数。可以通过Tween对象的Play、Pause、Rewind等方法进行动画控制,例如: ```csharp //播放Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Play(); //播放Tween动画 //暂停Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Pause(); //暂停Tween动画 //重置Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Rewind(); //重置Tween动画 ``` 以上就是关于DOTween插件设置参数、Ease曲线、回调函数、动画控制函数的介绍,希望能够对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莉萝爱萝莉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值