DOTween-API学习(第一部分)

本文详细介绍DOTween在Unity中的安装、使用方法及其各种动画效果,包括位置、旋转、缩放、打击、摇晃和混合动画,适用于游戏开发中的角色动画、UI动画等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

	- 作用:允许进行颜色混合

		- 参数:颜色值,动画持续时间
### DoTween 插件 API 文档与使用教程 #### 获取官方文档 为了获取最权威和详细的 DoTween 插件 API 文档,建议直接访问官方网站 http://dotween.demigiant.com/[^2]。该网站不仅提供了完整的 API 参考手册,还包含了丰富的使用案例和技术文章。 #### 主要特性概述 DoTween 是一款专为 Unity 平台设计的强大动画工具库,具备高性能、易用性和良好的扩展性等特点。其核心优势在于能够简化复杂的动画逻辑,使开发者可以专注于创意而非技术细节。 #### 关键功能介绍 - **多维度变换**:支持物体的位置、旋转角度、缩放比例等多种属性的变化。 - **时间线管理**:内置序列化机制,便于构建复杂的时间轴动画。 - **事件监听**:提供多种回调接口,在特定时刻触发相应动作。 - **路径绘制**:允许沿着指定曲线移动目标对象,增强视觉表现力。 - **缓动函数**:集成大量预设的 easing 函数,满足不同的运动需求[^4]。 #### 实际应用举例 下面是一个简单的例子来展示如何利用 C# 脚本来驱动球体沿 X 轴做匀速直线运动: ```csharp using UnityEngine; using DG.Tweening; public class BallMover : MonoBehaviour { private Transform _transform; void Awake(){ _transform = GetComponent<Transform>(); } void OnEnable(){ MoveBall(); } void MoveBall(){ // 将当前物体向右方偏移300单位距离,耗时两秒完成整个过程 _transform.DOMoveX(_transform.position.x + 300f, 2).SetEase(Ease.Linear); } } ``` 此段代码展示了最基本的 DOMove 方法调用方式,并设置了线性的加减速模式[^3]。 #### 学习资源推荐 除了阅读官方提供的资料外,还可以关注一些优质的第三方博客或视频课程,它们往往会有更贴近实战的经验分享。同时积极参与社区交流也是提高技能的有效途径之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值