当前位置:   article > 正文

Unity插件-DoTween_setease(ease

setease(ease
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  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
    1. SetRelative 设置向量不是目标位置。而是偏移的大小
    2. SetUpdate 设置更新类型,是否不受Time.timeScale影响
    SetUpdate(UpdateType.Normal, true);
    
    • 1
    1. SetLink将tween与对象关联,一但对象被清除,dotween将停止(或给到枚举的一种)。
  2. DOTween.To万能动画

Vector3 v3;
DOTween.To(() => v3, x => v3 = x, new Vector3(10, 10, 10), 10F);
  • 1
  • 2
  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
  • 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
  1. From动画
    为DoTween动画后追加一个From(),来让动画变成从目标坐标移动到当前坐标
    From()存在入参,如果传入true,那么动画的坐标从世界坐标改为相对坐标
    例:
obj.DOMove(new Vector3(1, 1, 1), 1).From();
  • 1
  1. OnComplete、OnStart回调
    OnComplete()可以让动画在播放结束时,添加一个额外的回调函数
    OnStart()可以让动画在播放开始时,添加一个额外的回调函数
    例:
int value = 2;
obj.DOLocalMove(new Vector3(1, 1, 1), 1).OnComplete(() =>
{
    Debug.Log(value);
});
  • 1
  • 2
  • 3
  • 4
  • 5

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

  1. DOText()文字动画
    为文字添加逐一显示的动画
    例:
txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
  • 1
  1. DOText()文字动画
    为文字添加逐一显示的动画
    例:
txt.DOText("大家好我爱你们!", 1, false, ScrambleMode.All);
  • 1
// 时间,振幅,频率,振动转向范围, 位移为整数, 是否采用缓动动画
obj.DOShakePosition(2, new Vector3(1, 1, 0), 10, 90, false, true);
  • 1
  • 2
  1. DOPunchPosition()冲击动画
    让物体向一个方向冲击出去然后反弹回来。
 // 冲击 -> 方向、持续时间、次数(频率)、反弹超出距离
obj.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.15f);
  • 1
  • 2
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  1. 控制函数
// 逆播回到原位置
transform.DOSmoothRewind();
// 维持当前速度回到原位置
transform.DORewind();
// 播放
transform.DOPlay();
// 暂停
transform.DOPause();
// 切换暂停和播放的状态
transform.DOTogglePause();
// 跳转时间点、跳转后是否继续播放
transform.DOGoto(0.2f, true);
// 倒播
transform.DOPlayBackwards();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 获取动画
// 获取所有播放的动画
var list = DOTween.PlayingTweens();
// 获取所有暂停的动画
list = DOTween.PausedTweens();
// 根据ID获取动画
list = DOTween.TweensById("tMove");
// 根据对象获取动画,是否仅在其播放时候获取到
list = DOTween.TweensByTarget(transform, true);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/125916?site
推荐阅读
相关标签
  

闽ICP备14008679号