Dotween是unity里非常常用的插件,但是很多人应该没有仔细的阅读过它的api,它实际有很多好用的方法,下面我就针对一些相对常用的方法,做下总结:
Dotween常用方法详解-CSDN博客
1) Position
1)改变世界坐标
移动方法,第一个参数是要移动到的目标点,不是移动这个向量的距离。
1
| transform.DOMove(new Vector3(1, 1, 1), 2);
|
只控制x轴上的移动,其他两个方向同理。
1
| transform.DOMoveX(1, 2);
|
2)改变局部坐标
1 2
| transform.DOLocalMove(new Vector3(1, 1, 1), 2); transform.DOLocalMoveX(1, 2);
|
2) Rotation
1)世界旋转
旋转到给定的值,改变的是欧拉角。
1
| transform.DORotate(new Vector3(0, 90, 0), 2);
|
旋转到给定的值,改变的是四元数。
1
| transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
|
2)局部旋转
旋转到给定的值,改变的是欧拉角。
1
| transform.DOLocalRotate(new Vector3(0, 90, 0), 2);
|
旋转到给定的值,改变的是四元数。
1
| transform.DOLocalRotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
|
在给定时间内,平滑的让自身的z轴正方向指向目标点。
1
| transform.DOLookAt(new Vector3(0, 0, 0), 2);
|
3) Scale
同上面一样,这里改变物体的缩放到目标值。
1
| transform.DOScale(new Vector3(2, 2, 2), 2);
|
其他两个轴向同理。
1
| transform.DOScaleX(3, 2);
|
4) Punch
第一个参数 punch:表示方向及强度。
第二个参数 duration:表示动画持续时间。
第三个参数 vibrato:震动次数。
第四个参数 elascity: 这个值是0到1的。
当为0时,就是在起始点到目标点之间运动。
不为0时,会把你赋的值乘上一个参数,作为你运动方向反方向的点,物体在这个点和目标点之间运动。
1 2 3
| 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);
|
以position为例,elascity的取值是 0 到 1 的。
elascity为0时,物体就在起始点和目标点之间运动。
elascity不为0时,会自动计算,产生一个反向点,数值越大方向点离的越远。
5)Shake
参数:持续时间,力量,震动,随机性,淡出。
力量:实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度。
震动:震动次数。
随机性:改变震动方向的随机值(大小:0~180)。
淡出:就是运动最后是否缓慢移动回到原本位置。
1 2 3
| transform.DOShakePosition(1, 5, 10, 50, true); transform.DOShakeRotation(3); transform.DOShakeScale(3);
|
6)Blend
带Blend名称的方法,允许混合动画。
原本同时执行两个Move方法,只会执行最新的一个动画命令。
例如:
1 2
| transform.DOMove(Vector3.one, 2); transform.DOMove(Vector3.one * 2, 2);
|
结果是物体运动到了(2,2,2)坐标上。
DOBlendableMoveBy
方法有两个特点:
1)允许多个同时执行。
例如:
1 2
| transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1); transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);
|
假设其实点为(0,0,0),最后动画停止时的坐标就是(0,1,1)。
2)它是增量动画。
1
| transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
|
假设其实点为(1,1,1),最后动画停止时的坐标就是(2,2,2)。
它的参数不是目标点,而是要移动的量。
以下三个函数同理:
1 2 3
| transform.DOBlendableRotateBy() transform.DOBlendableScaleBy() transform.DOBlendablePunchRotation()
|
Camera拓展方法
1)调整屏幕视角的宽高比
第一个参数是宽高的比值。
1
| camera.DOAspect(0.6f, 2);
|
2)改变相机background参数的颜色
1
| camera.DOColor(Color.blue, 2);
|
3)改变相机近切面的值
1
| camera.DONearClipPlane(200, 2);
|
4)改变相机远切面的值
1
| camera.DOFarClipPlane(2000, 2);
|
5)改变相机FOV的值
1
| camera.DOFieldOfView(30, 2);
|
6)改变相机正交大小
1
| camera.DOOrthoSize(10, 2);
|
7)按照屏幕像素计算的显示范围
1
| camera.DOPixelRect(new Rect(0f, 0f, 600f, 500f), 2);
|
8)按照屏幕百分比计算的显示范围
1
| camera.DORect(new Rect(0.5f, 0.5f, 0.5f, 0.5f), 2);
|
9)相机震动
相机震动效果 参数:持续时间,力量,震动,随机性,淡出。
力量:实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度。
震动:震动次数。
随机性:改变震动方向的随机值(大小:0~180)。
淡出:就是运动最后是否缓慢移动回到原本位置。
1
| camera.DOShakePosition(1, 10, 10, 50, false);
|
Material拓展方法
1)改变颜色
1
| material.DOColor(Color.black, 2);
|
2)按照shader的属性名,修改颜色
1
| material.DOColor(Color.clear, "_Color", 2);
|
3)修改alpha值
4)颜色渐变
Gradient是unity的渐变编辑器(下面有渐变编辑器的图)。
1
| material.DOGradientColor(Gradient, "_Color", 3);
|
5)改变材质offset的值
1
| material.DOOffset(new Vector2(1, 1), 2);
|
6)改变提供的shader属性的名称对应的Vector4值
1
| material.DOVector(new Vector4(0, 0, 0, 1), "_Color", 3);
|
7)颜色混合
跟位置混合动画同理,可以同时执行而不干扰,产生混合在一起的颜色。
1
| material.DOBlendableColor(Color.red, "_Color", 3);
|
Text拓展方法
头三个都是常规方法,不多介绍了。
1 2 3
| text.DOColor(Color.black, 2); text.DOFade(0, 2); text.DOBlendableColor(Color.black, 2);
|
这个方法比较有意思,是把第一个参数传入的内容按照时间,一个字一个字的输入到文本框中。
1
| text.DOText("context", 2);
|
```