Dotween学习

1)Position

// 世界坐标,第一个坐标是目标位置,第二个是过渡时间
transform.DOMove(Vector3.one, 2);
// 只控制x坐标,第一个坐标是目标x位置,第二个是过渡时间
transform.DOMoveX(1, 2);
// 局部坐标,第一个坐标是目标位置,第二个是过渡时间
transform.DOLocalMove(Vector3.one, 2);
// 只控制x坐标,第一个坐标是目标x位置,第二个是过渡时间
transform.DOLocalMoveX(1, 2);

2)Rotation

//世界旋转,旋转到给定的值,改变欧拉角
transform.DORotate(new Vector3(0, 90, 0), 2);
//旋转到给定的值,改变的是四元数
transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
//局部旋转,旋转到给定的值,改变欧拉角
transform.DOLocalRotate(new Vector3(0, 90, 0), 2);
//旋转到给定的值,改变的是四元数
transform.DOLocalRotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
//看向目标点
transform.DOLookAt(Vector3.one, 2);

3)Scale

//缩放到给定的值
transform.DOScale(new Vector3(2, 2, 2), 2);
//缩放x
 transform.DOScaleX(2, 2);

4)Punch

//第一个参数表示方向,第二个参数表示持续时间,第三个表示振动频率
//第四个在0-1之间,0表示在起始点和目的点之间运行,其他数值乘上一个参数,作为运动方向反方向的点,物体在这个点和目标点之间运动
transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.1f);
transform.DOPunchRotation(new Vector3(0, 90, 0), 2, 2, 0.1f);
transform.DOPunchScale(new Vector3(2, 2, 2), 2, 2, 0.1f);

5)Shake

//第一个参数是持续时间,第二个参数是震动的幅度,第三个参数是震动次数
//第四个参数是改变震动方向的随机值,大小在0-180,第五个参数是运动最后是否缓慢移动回到原本位置
transform.DOShakePosition(2, 2, 5, 90, true);
transform.DOShakeRotation(3);
transform.DOShakeScale(3);

6)Blend

如果有两个DOMove方法,只会运行最新的一个DOMove方法,使用Blend方法,就允许混合动画,每个动画都会执行

//是增量动画,比如起始点(1,1,1),动画结束后会移动到(2,2,2)
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
//允许多个执行,比如起始点(1,1,1),动画结束后会移动到(0,1,1)
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);
//三个方法相同用法DOBlendableRotateBy()、DOBlendableScaleBy()、DOBlendablePunchRotation()

7)相机效果

//调整屏幕视角的宽高比
 camera.DOAspect(0.5f, 1);
        
//改变相机背景参数的颜色
 camera.DOColor(Color.red, 1);
        
//改变相机近切面的值
camera.DONearClipPlane(200, 1);
        
//改变相机远切面的值
 camera.DOFarClipPlane(2000, 1);
        
//改变相机FOV的值
 camera.DOFieldOfView(30, 1);
        
//改变相机正交大小
camera.DOOrthoSize(10, 1);
        
//按照屏幕像素计算的显示范围
camera.DOPixelRect(new Rect(0f, 0f, 1000f, 500f), 1);
        
//按照屏幕百分比计算的显示范围
camera.DORect(new Rect(0.5f, 0.5f, 0.5f, 0.5f), 1);
        
//第一个参数是持续时间,第二个参数是震动的幅度,第三个参数是震动次数
//第四个参数是改变震动方向的随机值,大小在0-180,第五个参数是运动最后是否缓慢移动回到原本位置
camera.DOShakePosition(1, 10, 10, 50, false);

8)Material

//改变颜色
material.DOColor(Color.red, 1);
        
//按照属性名修改颜色
material.DOColor(Color.clear, "Color", 1);
        
//修改alpha值
material.DOFade(0, 2);
        
//颜色渐变,Gradient是unity的渐变编辑器
material.DOGradientColor(Gradient, "Color", 2);
        
//改变材质offset的值
material.DOOffset(new Vector2(1, 1), 2);
        
//改变shader属性的名称对应的Vector4值
material.DOVector(new Vector4(0, 0, 0, 1), "Color", 2);
        
//颜色混合,可以同时执行而不干扰,产生混合在一起的颜色
 material.DOBlendableColor(Color.red, "Color", 2);

9)Text

//文字颜色变化
text.DOColor(Color.black, 2);
//颜色褪变
text.DOFade(0, 2);
 //混合变化
text.DOBlendableColor(Color.black, 2);
 //把第一个参数的文字按照时间,一个一个的输入到文本框中
text.DOText("context", 2);

10)Sequence

Sequence quence = DOTween.Sequence();
//添加动画到队列中
quence.Append(transform.DOMove(Vector3.one, 2));
 
//添加时间间隔
quence.AppendInterval(1);
        
//按时间点插入动画, 第一个参数为是把动画插入到规定的时间点
//例如把它DORotate动画添加到此队列的0秒时执行,虽然它不是最先添加进队列的
quence.Insert(0, transform.DORotate(new Vector3(0, 90, 0), 1));
        
//加入当前动画,Join会加入和让动画与当前正在执行的动画一起执行
//例如DOMove会和DOScale一起执行
quence.Append(transform.DOScale(new Vector3(2, 2, 2), 2));
quence.Join(transform.DOMove(Vector3.zero, 2));
        
//预添加动画, 预添加 会直接添加动画到Append的前面,也就是最开始的时候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));

//这里预添加的执行顺序问题,采取了队列的性质,但预添加与原本的的队列相比是一个反向队列
Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
quence.PrependInterval(1);
//执行顺序是 PrependInterval----Prepend-----Append,最后添加的会在队列的最顶端
        
//预添加时间间隔
quence.PrependInterval(1);
        
// 回调函数
        
//预添加回调
quence.PrependCallback(PreCallBack);
        
//在规定的时间点加入回调
quence.InsertCallback(0, InsertCallBack);
        
//添加回调
quence.AppendCallback(CallBack);

10)Tweener的设置

TweenParams para = new TweenParams();

//设置动画循环 
//第一个参数是循环次数  -1代表无限循环
//第二个参数是循环方式 
//Restart  重新开始  
//Yoyo   从起始点运动到目标点,再从目标点运动回来,这样循环 
//Incremental   一直向着运动方向运动
para.SetLoops(-1, LoopType.Yoyo);

//设置参数
transform.DOMove(Vector3.one, 2).SetAs(para);
        
//设置自动杀死动画
transform.DOMove(Vector3.one, 1).SetAutoKill(true);
        
//from补间
transform.DOMove(Vector3.one, 2).From(true);
//From参数 isRelative(相对的):
//为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
// 为false,传入的就是目标值,即传入值 = 目标值
           
//设置动画延时 
transform.DOMove(Vector3.one, 2).SetDelay(1);
        
//设置动画运动以速度为基准
transform.DOMove(Vector3.one, 1).SetSpeedBased();
//使用SetSpeedBased时,移动方式就变成以速度为基准
// 原本表示持续时间的第二个参数,就变成表示速度的参数,每秒移动的单位数
        
//设置动画ID
transform.DOMove(Vector3.one, 2).SetId("Id");
        
//设置是否可回收,为true的话,动画播放完会被回收,缓存下来,不然播完就直接销毁
transform.DOMove(Vector3.one, 2).SetRecyclable(true);

//设置动画为增量运动
//transform.DOMove(Vector3.one, 2).SetRelative(true);
//SetRelative参数 isRelative(相对的):
//为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
//为falese,传入的就是目标值,即传入值 = 目标值
          
//设置动画的帧函数
transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);
//第一个参数 UpdateType :选择使用的帧函数
//UpdateType.Normal:更新每一帧中更新要求。 
//UpdateType.Late:在LateUpdate调用期间更新每一帧。 
//UpdateType.Fixed:使用FixedUpdate调用进行更新。 
//UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
//第二个参数:为true,则补间将忽略Unity的Time.timeScale

11)运动曲线

//以Ease枚举作为参数
          transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
//第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次,共三次
//第三个参数 period 值的范围是 - 1~1
//值 > 0时,为活动范围的衰减值,活动范围会由大变小
//值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
//值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
//这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数
       
//使用AnimationCurve当作参数
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
//AnimationCurve 横轴是是时间比例
//AnimationCurve 纵轴是倍数
//假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
//此物体最后动画结束时的实际坐标即为 v* (e -s)+ s
          
//以回调函数为参数
transform.DOMove(Vector3.one * 2, 1).SetEase(MyEaseFun);
//返回值是运动距离的百分比 值应为0~1之间,最后的值需为1,不然停留的位置不会是目标位置
private float MyEaseFun(float time, float duration, float overshootOrAmplitude, float period)
{
	return time / duration;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值