DOTween-API
Unity 2018.3.7f1,以 Vector3.one 为单位举例说明
安装
从AssetStore安装(推荐)
- 打开AssetStore,搜索DOTween(HOTween V2)
- 下载后import到项目中
从Github安装
- 浏览器打开:https://github.com/Demigiant/dotween
- 下载包后直接导入到项目或复制全部文件到项目目录
使用
测试是否导入成功
- 新建一个Unity项目,新建一个游戏物体
- 新建一个脚本,把脚本附加到目标物体上
- 打开脚本,以C#为例,using DG.Tweening,就可以调用相关方法了
Transform组件扩展方法
Position
DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>
- DOMove(this Transform target, Vector3 endValue, float duration, bool snapping = false)
- 举例:持续2秒后移动至(1, 1, 1) (世界坐标)
- transform.DOMove(Vector3.one, 2);
- DOLocalMoveX(float endValue, float duration, bool snapping = false)
- 举例:持续2秒后向X轴移动1个单位距离(局部坐标)
- transform.DOLocalMoveX(1, 2);
- DOLocalMove(Vector3 endValue, float duration, bool snapping = false)
- 举例:持续2秒后移动至(1, 1, 1) (局部坐标)
- transform.DOLocalMove(Vector3.one,2);
Rotation
DG.Tweening.Core.TweenerCore<Quaternion, Vector3, DG.Tweening.Plugins.Options.QuaternionOptions>
- DORotate(Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast)
- 举例:持续2秒后旋转至(1, 1, 1) (给定欧拉角、世界旋转)
- transform.DORotate(Vector3.one, 2);
- DOLocalRotate(Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast)
- 举例:持续2秒后旋转至指定值(给定四元数、局部旋转)
- transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
- DOLookAt(Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null)
- 举例:持续2秒后,平滑的让自身的Z轴正方向指向目标点
- transform.DOLookAt(Vector3.one, 2);
Scale
DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>
- DOScale(Vector3 endValue, float duration)
- 举例:持续2秒后,平滑缩放至原物体2倍大小
- transform.DOScale(Vector3.one, 2);
Punch
Tweener
- transform.DOPunchPosition(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false)
- transform.DOPunchRotation(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
- transform.DOPunchScale(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
参数: punch, duration, vibrato , elasticity
punch
- 方向及强度
duration
- 动画持续时间
vibrato
- 震动次数
elasticity(0 -> 1)
-
值为0
- 在起始点和目标点之间运动
-
值不为0
- 该值会自动乘上一个参数,并产生一个反向点
- 在这个点和目标点之间运动
Shake
Tweener
- Transform.DOShakePosition(float duration, float strength = 1, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true)
- Transform.DOShakeRotation(float duration, float strength = 90, int vibrato = 10, float randomness = 90, bool fadeOut = true)
- Transform.DOShakeScale(float duration, float strength = 1, int vibrato = 10, float randomness = 90, bool fadeOut = true)
参数:持续时间,力量,震动,随机性,淡出
持续时间
力量
- 震动的幅度,可以理解成相机施加的力的大小
- 使用Vector3可以选择每个轴向不同的强度
震动
- 震动次数
随机性
- 改变震动方向的随机值(大小:0~180)
淡出
- 运动最后是否缓慢移动回到原本位置
Blend
Tweener
- Transform.DOBlendableLocalMoveBy(Vector3 byValue, float duration, bool snapping = false)
- Transform.DOBlendableLocalRotateBy(Vector3 byValue, float duration, RotateMode mode = RotateMode.Fast)
- Transform.DOBlendableMoveBy(Vector3 byValue, float duration, bool snapping = false)
- Transform.DOBlendablePunchRotation(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
- Transform.DOBlendableRotateBy(Vector3 byValue, float duration, RotateMode mode = RotateMode.Fast)
- Transform.DOBlendableScaleBy(Vector3 byValue, float duration)
两个特点
允许多个同时执行
- 举例:
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);
- 假设起始点为(0, 0, 0),那么最后动画停止时点的坐标即为(0, 1, 1)
是增量动画
- 举例:
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
- 假设起始点为(1, 1, 1),最后动画停止时的坐标就是(2, 2, 2)
它的参数不是目标点,而是要移动的量
Material
新版Unity中,通过MashRender获取材质。
Color
DG.Tweening.Core.TweenerCore<Color, Color, DG.Tweening.Plugins.Options.ColorOptions>
- Material.DOColor(Color endValue, string property, float duration)
- 举例:颜色变化动画(2秒,变红)(注:同时使用多个时,取最后的颜色值)
- material.DOColor(Color.red, "_Color", 2);
- 参数:颜色,材质颜色配置名,动画持续时间
Fade
DG.Tweening.Core.TweenerCore<Color, Color, DG.Tweening.Plugins.Options.ColorOptions>
- Material.DOFade(float endValue, string property, float duration)
- 举例:透明度变化动画(2秒,完全透明)
- material.DOFade(0, "_Color", 2);
- 参数:透明度,材质颜色配置名,动画持续时间
GradientColor
Sequence
- Material.DOGradientColor(Gradient gradient, float duration)
- 搭配Gradient组件使用
- 参数:Gradient组件名,动画持续时间
Offset
DG.Tweening.Core.TweenerCore<Vector2, Vector2, DG.Tweening.Plugins.Options.VectorOptions>
- Material.DOOffset(Vector2 endValue, int propertyID, float duration)
Vector
DG.Tweening.Core.TweenerCore<Vector4, Vector4, DG.Tweening.Plugins.Options.VectorOptions>
- Material.DOVector(Vector4 endValue, string property, float duration)
- 作用:直接改变材质shader的四维变量的值
- 参数:四维变量,材质四维向量配置名,动画持续时间
BlendColor
Tweener
- Material.DOBlendableColor(Color endValue, float duration)
- 作用:允许进行颜色混合
- 参数:颜色值,动画持续时间