【Unity3D插件】DoTween插件(一)

前言:

本文主要来自dotween官方文档,如有翻译错误,请参考官方文档:http://dotween.demigiant.com/documentation.php#globalSettings

一、命名法

Tweener 控制一个值并为其设置动画的补间。

Sequence 一个特殊的补间,而不是控制一个值,而是控制其他补间并将它们作为一个组进行动画处理。

Tween 表示 Tweener 和 Sequence 的通用词。

Nested tween(嵌套补间)包含在序列中的补间。

二、前缀

前缀对于充分利用 IntelliSense 很重要,因此请尽量记住这些:

DO 所有补间快捷方式的前缀(可以直接从已知对象开始的操作,如变换或材质)。也是主要 DOTween 类的前缀。

transform.DOMoveX(100, 1);
transform.DORestart();
DOTween.Play();

Set  可以链接到补间的所有设置的前缀(除了 From,因为它被应用为设置但不是真正的设置)。

myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();

On 可以链接到补间的所有回调的前缀。

myTween.OnStart(myStartFunction).OnComplete(myCompleteFunction);

三、DOTween.Init

第一次创建补间时,DOTween 将使用默认值自动初始化。

相反,如果您更喜欢自己初始化它(推荐),请在创建任何补间之前调用此方法一次(之后调用它不会产生任何效果)。

考虑到您仍然可以通过使用 DOTween 的全局设置随时更改所有初始化设置

或者,您可以链接SetCapacity到 Init 方法,该方法允许设置最大 Tweeners/Sequences 初始容量(与稍后调用DOTween.SetTweensCapacity相同)。

static DOTween.Init( bool recycleAllByDefault = false, bool useSafeMode = true, LogBehaviour logBehaviour = LogBehaviour.ErrorsOnly )

初始化 DOTween。不带任何参数调用它以使用您在 DOTween 实用程序面板中设置的首选项(否则它们将被任何最终传递的参数覆盖)。
recycleAllByDefault  如果为 TRUE,所有新的补间将被设置为回收,这意味着当它们被杀死时,它们不会被销毁,而是会被放入池中并重复使用,而不是创建新的补间。此选项允许您通过重用补间来避免 GC 分配,但您必须注意补间引用,因为即使它们被杀死,它们也可能会激活(因为它们可能已经重新生成并且现在可能正在使用其他完全不同的补间)。
如果您想在补间被杀死时自动将补间引用设置为 NULL,您可以使用 OnKill 回调,如下所示:

.OnKill(()=> myTweenReference = null)

您可以随时通过更改静态 DOTween.defaultRecyclable属性来更改此设置,也可以使用SetRecyclable分别设置每个补间的回收行为
useSafeMode : 如果设置为 TRUE 补间将稍微慢一些但更安全,允许 DOTween 自动处理诸如在补间运行时目标被破坏之类的事情。
警告:在 iOS 上,safeMode 仅在剥离级别设置为“Strip Assemblies”或脚本调用优化设置为“Slow and Safe”时才有效,而在 Windows 10 WSA 上,如果选择了 Master Configuration 和 .NET,它将不起作用。
logBehaviour  根据选择的模式,DOTween 将仅记录错误、错误和警告,或所有内容以及附加信息。        

// EXAMPLE A: initialize with the preferences set in DOTween's Utility Panel
DOTween.Init();
// EXAMPLE B: initialize with custom settings, and set capacities immediately
DOTween.Init(true, true, LogBehaviour.Verbose).SetCapacity(200, 10);

四、创建一个补间(Tweener)

Tweeners 是 DOTween 的工作蚂蚁。他们获取一个属性/字段并将其动画化为给定值。

截至目前,DOTween 可以补间这些类型的值:
float、double、int、uint、long、ulong、Vector2/3/4、Quaternion、Rect、RectOffset、Color、string
(其中一些值可以以 特殊方式补间)

此外,您可以创建 自定义 DOTween 插件来补间自定义值类型

创建 Tweener 有 3 种方法:通用方式快捷方式附加通用方式

A. 通用方式

这是最灵活的补间方式,允许您补间几乎任何值,无论是公共的还是私有的、静态的还是动态 的(您知道,快捷方式实际上在后台使用通用方式)。

与快捷方式一样,通用方式有一个 FROM 替代版本。只需将From链接到 Tweener 以使补间表现为 FROM 补间而不是 TO 补间。

static DOTween.To( getter, setter, to, float duration )

将给定属性从其当前值更改为给定值。
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter  将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
to 要达到的最终值。
duration  补间的持续时间。

例子

// Tween a Vector3 called myVector to 3,4,8 in 1 second
DOTween.To(()=> myVector, x=> myVector = x, new Vector3(3,4,8), 1);
// Tween a float called myFloat to 52 in 1 second
DOTween.To(()=> myFloat, x=> myFloat = x, 52, 1);

B. 捷径

DOTween 包含一些已知 Unity 对象的快捷方式,例如 Transform、Rigidbody 和 Material。您可以直接从对这些对象的引用开始补间(这也会自动将对象本身设置为补间目标),例如:

transform.DOMove(new Vector3(2,3,4), 1);
rigidbody.DOMove(new Vector3(2,3,4), 1);
material.DOColor(Color.green, 1);

这些快捷方式中的每一个也有一个 FROM 替代版本,除非另有说明。只需将From链接到 Tweener 以使补间表现为 FROM 补间而不是 TO 补间。
重要提示:当您将 FROM 分配给补间时,目标将立即跳转到 FROM 位置(就像“编写那行代码的那一刻”,而不是“补间开始的那一刻”)。

transform.DOMove(new Vector3(2,3,4), 1).From();
rigidbody.DOMove(new Vector3(2,3,4), 1).From();
material.DOColor(Color.green, 1).From();

基本元素快捷键

音频混音器(Unity 5)

DOSetFloat( string floatName, float to, float duration )

将 AudioMixer 的公开浮点数补间到给定值。
请注意,您需要在 AudioMixerGroup 中手动公开一个浮点数,以便能够从 AudioMixer 对其进行补间。

AudioSource:

DOFade(float to,float duration)

将 AudioSource 补间 volume到给定的值..

DOPitch(float to,float duration)

将 AudioSource 补间 pitch到给定的值..

Camera:

DOAspect(float to, float duration)

DOColor(Color to, float duration)

DOFarClipPlane(float to, float duration)

DOFieldOfView(float to, float duration)

DONearClipPlane(float to, float duration)

DOOrthoSize(float to, float duration)

DOPixelRect(Rect to, float duration)

DORect(Rect to, float duration)

DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

Light:

DOColor(Color to,float duration)

将灯光的颜色更改为给定的颜色

DOIntensity(float to,float duration)

将光的强度更改为给定的强度

DOShadowStrength(float to,float duration)

将灯光的 shadowStrength 更改为给定的

可混合补间

DOBlendableColor(float to,float duration)

将目标的颜色补间到给定值,以允许其他 DOBlendableColor 补间在同一个目标上一起工作的方式,而不是像多个 DOColor 那样相互争斗。

LineRender:

DOColor(Color2 startValue,Color2 endValue,浮动持续时间)

将目标的颜色更改为给定的颜色。请注意,此方法还需要插入补间的起始颜色,因为 LineRenderers 无法获取它们。
Color2是一个特殊的 DOTween 结构,它允许将两种颜色存储在一个变量中。

myLineRende

Material:

DOColor(float to,float duration)

将目标的颜色更改为给定的颜色。

DOColor(Color to, string property, float duration)

将目标的命名颜色属性更改为给定的。
财产补间的属性名称。

// Tween the specular value of a material
myMaterial.DOColor(Color.green, "_SpecColor", 1);

DOColor(Color to, int propertyID, float duration)

将目标的命名颜色属性更改为给定的。
propertyID 补间属性的 ID。

DOFade(float to, float duration)

将目标的 alpha 淡化为给定值(仅适用于支持 alpha 的材质)。

DOFade(float to, string property, float duration)

将目标的命名 alpha 属性淡化为给定的属性。
property 补间的属性名称。

DOFade(float to, int propertyID, float duration)

将目标的命名 alpha 属性淡化为给定的属性。
propertyID 补间属性的 ID。

DOFloat(float to, string property, float duration)

将目标的命名浮点属性更改为给定的。
property 补间的属性名称。

DOFloat(float to, int propertyID, float duration)

将目标的命名浮点属性更改为给定的。
propertyID 补间属性的 ID。

DOGradientColor(Gradient to, float duration)

通过给定的渐变更改目标的颜色。
注意:仅使用渐变的颜色,而不是 alpha。
注意:创建一个序列,而不是一个 Tweener。
仅适用于 Unity 4.3 或更高版本(在此之前不存在 Gradient 类)

DOGradientColor(Gradient to, string property, float duration)

通过给定的渐变更改目标的命名颜色属性。
财产补间的属性名称。
注意:仅使用渐变的颜色,而不是 alpha。
注意:创建一个序列,而不是一个 Tweener。
仅适用于 Unity 4.3 或更高版本(在此之前不存在 Gradient 类)

// Tween the specular value of a material
myMaterial.DOGradientColor(myGradient, "_SpecColor", 1);

DOGradientColor(Gradient to, int propertyID, float duration)

通过给定的渐变更改目标的命名颜色属性。
财产ID补间属性的 ID。
注意:仅使用渐变的颜色,而不是 alpha。
注意:创建一个序列,而不是一个 Tweener。
仅适用于 Unity 4.3 或更高版本(在此之前不存在 Gradient 类)

DOOffset( Vector2 to, float duration )

将目标更改为 textureOffset给定的。

DOOffset( Vector2 to, string property, float duration )

将目标的命名 textureOffset属性更改为给定的属性。
property 补间的属性名称。

DOOffset( Vector2 to, int propertyID, float duration )

将目标的命名 textureOffset属性更改为给定的属性。
propertyID 补间属性的 ID。

DOTiling(Vector2 to,float duration)

将目标更改为 textureScale给定的。

DOTiling(Vector2 to,string property, float duration)

将目标的命名 textureScale属性更改为给定的属性。
property  补间的属性名称。

DOTiling(Vector2 to,int propertyID,float duration)

将目标的命名 textureScale属性更改为给定的属性。
propertyID 补间属性的 ID。

DOVector( Vector4 to, string property, float duration )

将目标的命名 Vector 属性更改为给定的。
property 补间的属性名称。

DOVector( Vector4 to, int propertyID, float duration )

将目标的命名 Vector 属性更改为给定的。
propertyID 补间属性的 ID。

Blendable tweens:

DOBlendableColor(Color to,float duration)

将材质的颜色补间到给定值,以允许其他 DOBlendableColor 补间在同一个目标上协同工作的方式,而不是像多个 DOColor 那样相互争斗。

DOBlendableColor(Color to,string property, float duration)

将材质的命名颜色属性补间到给定值,以允许其他 DOBlendableColor 补间在同一目标上协同工作,而不是像多个 DOColor 那样相互争斗。
财产补间的属性名称。

// Tween the specular value of a material
myMaterial.DOBlendableColor(Color.green, "_SpecColor", 1);

DOBlendableColor(Color to,int propertyID,float duration)

将材质的命名颜色属性补间到给定值,以允许其他 DOBlendableColor 补间在同一目标上协同工作,而不是像多个 DOColor 那样相互争斗。
财产ID补间属性的 ID。

Rigidbody:

这些快捷方式在后台使用刚体的 MovePosition/MoveRotation 方法,以正确地为与物理对象相关的事物设置动画。

移动

DOMove(Vector3 to,float duration,bool snapping)

将目标的位置移动到给定值。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOMoveX/DOMoveY/DOMoveZ(float to,float duration,bool snapping)

将目标的位置移动到给定值,仅对所选轴进行补间(请注意,在刚体的情况下, 其他轴仍将被补间“锁定”)。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOJump( Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping )

将目标的位置补间到给定值,同时沿 Y 轴应用跳跃效果。
注意:返回一个序列而不是一个 Tweener,因此 SetSpeedBased 不会有任何效果。
endValue 要达到的最终值。
jumpPower 跳跃的力量(跳跃的最大高度由这个加上最终的 Y 偏移表示)。
numJumps 总跳跃次数。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

旋转

DORotate( Vector3 to, float duration, RotateMode mode)

将目标旋转到给定值。
需要一个Vector3结束值,而不是 aQuaternion(如果你真的想传递一个四元数,只需使用 转换它 myQuaternion.eulerAngles)。
Fast默认):旋转将采取最短路线,并且不会旋转超过 360°。
FastBeyond360: 旋转将超过 360°。
WorldAxisAdd:使用世界轴和高级精度模式将给定的旋转添加到变换中(如使用 transform.Rotate(Space.World) 时)。在这种模式下,最终值总是被认为是相对的。
LocalAxisAdd:将给定的旋转添加到变换的局部轴(例如在 Unity 的编辑器中启用“本地”开关或使用 transform.Rotate(Space.Self) 旋转对象时)。在这种模式下,最终值始终被认为是相对的。

DOLookAt(Vector3 towards,float duration,AxisConstraint axisConstraint = AxisConstraint.None,Vector3 up = Vector3.up)

towards 旋转目标,使其朝向给定位置。
axisConstraint  旋转的最终轴约束。
默认值: AxisConstraint.None
up 定义向上方向的向量。
默认值: Vector3.up

Path - 没有 FROM

PRO ONLY ➨ Spiral – 无 FROM

DOPath(Vector3[] PathPoints,float Duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

position使用选择的路径算法通过给定的路径航 点补间刚体 。
其他选项可通过 SetOptions和 SetLookAt 获得。
PathPoints 要经过的路标。
Duration 补间的持续时间。
pathType  路径类型:( Linear直线路径)、 CatmullRom(弯曲 CatmullRom 路径)或 CubicBezier(弯曲路径,每个航路点有 2 个控制点)。
pathMode 路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution 解析度路径的分辨率(在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor 路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。


CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:

1)路径航路点,

2)IN 控制点(前一个航路点上的控制点),

3)OUT 控制点(控制点在新航点上)。

请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

DOLocalPath(Vector3[] pathPoints,float duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

localPosition 使用选择的路径算法通过给定的路径航 点补间刚体 。
其他选项可通过 SetOptions和 SetLookAt 获得。
pathPoints 要经过的路标。
duration 补间的持续时间。
pathType  路径类型:Linear(直线路径)或 CatmullRom(曲线 CatmullRom 路径)。
pathMode  路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution  解析度路径的分辨率(在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor  路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。
CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:1)路径航路点,2)IN 控制点(前一个航路点上的控制点),3)OUT 控制点(控制点在新航点上)。请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

DOSpiral(float duration,Vector3 axis = null,SpiralMode mode = SpiralMode.Expand,float speed = 1,float frequency = 10,float depth = 0,bool snapping = false)

补间刚体的 position螺旋形状。
duration补间的持续时间。
axis  将围绕其旋转的轴。
 mode 螺旋运动的类型。
speed  旋转速度。
frequency  频率旋转频率。较低的值会导致更宽的螺旋。
depth  指示补间应该沿着螺旋轴移动多少。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

transform.DOSpiral(3, Vector3.forward, SpiralMode.ExpandThenContract, 1, 10);

Rigidbody2D:

这些快捷方式在后台使用rigidbody2D 的MovePosition/MoveRotation 方法,正确地为与物理对象相关的事物设置动画。

移动

DOMove(Vector2 to,float duration,bool snapping)

将目标的位置移动到给定值。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOMoveX/DOMoveY(float to,float duration,bool snapping)

将目标的位置移动到给定值,仅对所选轴进行补间(请注意,在刚体的情况下, 其他轴仍将被补间“锁定”)。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOJump( Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping )

将目标的位置补间到给定值,同时沿 Y 轴应用跳跃效果。
注意:返回一个序列而不是一个 Tweener。
endValue 要达到的最终值。
jumpPower 跳跃的力量(跳跃的最大高度由这个加上最终的 Y 偏移表示)。
numJumps 总跳跃次数。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

旋转

DORotate(float toAngle,float duration)

将目标旋转到给定值。

Path- 没有 FROM

DOPath(Vector2[] waypoints,float duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

position使用选择的路径算法,通过给定的路径航 点补间 Rigidbody2D 。
其他选项可通过 SetOptions和 SetLookAt 获得。
waypoints 要经过的路标。
duration 补间的持续时间。
pathType  路径类型:( Linear直线路径)、 CatmullRom(弯曲 CatmullRom 路径)或 CubicBezier(弯曲路径,每个航路点有 2 个控制点)。
pathMode 路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution 解析度路径的分辨率(在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor  路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。
CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:1)路径航路点,2)IN 控制点(前一个航路点上的控制点),3)OUT 控制点(控制点在新航点上)。请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

DOLocalPath(Vector2[] waypoints,float duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

localPosition使用选择的路径算法,通过给定的路径航 点补间 Rigidbody2D 。
其他选项可通过 SetOptions和 SetLookAt 获得。
waypoints 要经过的路标。
duration 补间的持续时间。
pathType 路径类型:Linear(直线路径)或 CatmullRom(曲线 CatmullRom 路径)。
pathMode 路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution 解析度路径的分辨率(在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor  路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。
CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:1)路径航路点,2)IN 控制点(前一个航路点上的控制点),3)OUT 控制点(控制点在新航点上)。请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

SpriteRenderer(精灵渲染器)

DOColor(Color to,float duration)

将目标的颜色更改为给定的颜色。

DOFade(float to,float duration)

将目标的 alpha 淡化为给定值。

DOGradientColor(Gradient to,float duration)

通过给定的渐变更改目标的颜色。
注意:仅使用渐变的颜色,而不是 alpha。
注意:创建一个序列,而不是一个 Tweener。

可混合补间

DOBlendableColor(Color to,float duration)

将目标的颜色补间到给定值,以允许其他 DOBlendableColor 补间在同一个目标上一起工作的方式,而不是像多个 DOColor 那样相互争斗。

TrailRenderer(追踪渲染器)

DOResize(float toStartWidth,float toEndWidth,float duration)

将 TrailRenderer 更改为 startWidth/endWidth给定的

DOTime(float to,float duration)

将目标的 time值更改为给定 的值

Transform (转换)

移动

DOMove(Vector3 to,float duration,bool snapping)

将目标的位置移动到给定值。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOMoveX/DOMoveY/DOMoveZ(float to,float duration,bool snapping)

将目标的位置移动到给定值,仅补间所选轴。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOLocalMove(Vector3 to,float duration,bool snapping)

将目标移动 localPosition到给定值。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ(float to,float duration,bool snapping)

将目标移动 localPosition到给定值,仅补间所选轴。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOJump( Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping )

将目标的位置补间到给定值,同时沿 Y 轴应用跳跃效果。
注意:返回一个序列而不是一个 Tweener。
endValue 要达到的最终值。
jumpPower 跳跃的力量(跳跃的最大高度由这个加上最终的 Y 偏移表示)。
numJumps 总跳跃次数。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOLocalJump( Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping )

将目标的 localPosition 补间到给定值,同时沿 Y 轴应用跳跃效果。
注意:返回一个序列而不是一个 Tweener。
endValue 要达到的最终值。
jumpPower 跳跃的力量(跳跃的最大高度由这个加上最终的 Y 偏移表示)。
numJumps 总跳跃次数。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。

旋转

DORotate( Vector3 to, float duration, RotateMode mode)

将目标旋转到给定值。
需要一个Vector3结束值,而不是 aQuaternion(如果你真的想传递一个四元数,只需使用 转换它 myQuaternion.eulerAngles)。
重要提示:在某些限制情况下,仅沿 X 轴进行小幅旋转时,目标会摇晃定位。如果发生这种情况,请 DORotateQuaternion改用。
模式表示旋转模式。
Fast默认):旋转将采取最短路线,并且不会旋转超过 360°。
FastBeyond360: 旋转将超过 360°。
WorldAxisAdd:使用世界轴和高级精度模式将给定的旋转添加到变换中(如使用 transform.Rotate(Space.World) 时)。在这种模式下,最终值总是被认为是相对的。
LocalAxisAdd:将给定的旋转添加到变换的局部轴(例如在 Unity 编辑器中启用“局部”开关或使用 transform.Rotate(Space.Self) 旋转对象时)。在这种模式下,最终值始终被认为是相对的。

DORotateQuaternion(Quaternion to,float duration)

使用纯四元数将目标旋转到给定值。
注意:DORotate采用 Vector3 值,是首选的旋转方法。此方法是针对非常特殊的情况实现的,并且不支持 LoopType.Incremental循环(对于自身也不支持,也不在 LoopType.Incremental序列中)

DOLocalRotate( Vector3 to,float duration, RotateMode mode)

将目标旋转 localRotation到给定值。
需要一个Vector3结束值,而不是 aQuaternion(如果你真的想传递一个四元数,只需使用 转换它 myQuaternion.eulerAngles)。
模式表示旋转模式。
Fast默认):旋转将采取最短路线,并且不会旋转超过 360°。
FastBeyond360: 旋转将超过 360°。
WorldAxisAdd:使用世界轴和高级精度模式将给定的旋转添加到变换中(如使用 transform.Rotate(Space.World) 时)。在这种模式下,最终值总是被认为是相对的。
LocalAxisAdd:将给定的旋转添加到变换的局部轴(例如在 Unity 编辑器中启用“局部”开关或使用 transform.Rotate(Space.Self) 旋转对象时)。在这种模式下,最终值始终被认为是相对的。

DOLocalRotateQuaternion(Quaternion to,float duration)

localRotation使用纯四元数 将目标旋转 到给定值。
注意:DORotate采用 Vector3 值,是首选的旋转方法。此方法是针对非常特殊的情况实现的,并且不支持 LoopType.Incremental循环(对于自身也不支持,也不在 LoopType.Incremental序列中)

DOLookAt(Vector3 towards,float duration,AxisConstraint axisConstraint = AxisConstraint.None,Vector3 up = Vector3.up)

towards 旋转目标,使其朝向给定位置。
axisConstraint  旋转的最终轴约束。
默认值: AxisConstraint.None
up 定义向上方向的向量。
默认值: Vector3.up

DODynamicLookAt(Vector3 towards,float duration,AxisConstraint axisConstraint = AxisConstraint.None,Vector3 up = Vector3.up)

实验:旋转目标,使其看向给定位置,每帧更新lookAt位置(相反 DOLookAt,当补间开始时,只计算一次lookAt旋转)。
axisConstraint  旋转的最终轴约束。
默认值: AxisConstraint.None
up  定义向上方向的向量。
默认值: Vector3.up

Scale:

DOScale( float/Vector3 to, float duration )

将目标缩放 localScale到给定值。
通过 a float而不是 a Vector3可以统一缩放东西。

DOScaleX/DOScaleY/DOScaleZ(float to,float duration)

将目标缩放 localScale到给定值,同时仅对所选轴进行补间。

Punch 冲床 – 没有 FROM

DOPunchPosition( Vector3 punch,float duration, int vibrato,float elasticity, bool snapping )

朝给定方向冲一个变换 localPosition,然后回到起始方向,就好像它通过弹性连接到起始位置一样。
punch 出拳的方向和强度(添加到变换的当前位置)。
duration 补间的持续时间。
vibrato 指示冲头将振动多少。
elasticity 表示向后弹跳时向量将超出起始位置多少(0 ​​到 1)。1 在冲头方向和相反方向之间产生完全振荡,而 0 只在冲头和起始位置之间振荡。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOPunchRotation( Vector3 punch,float duration, int vibrato, float elastic )

将 Transform localRotation冲向给定值,然后回到起始值,就好像它通过弹性连接到起始旋转一样。
punch 出拳强度(添加到变换的当前旋转)。
duration 补间的持续时间。
vibrato 指示冲头将振动多少。
elastic  表示当向后反弹时,向量将超出起始旋转多少(0 ​​到 1)。1 在冲头旋转和反向旋转之间产生完全振荡,而 0 仅在冲头和开始旋转之间振荡。

DOPunchScale( Vector3 punch,float duration, int vibrato, float elastic )

将 Transform localScale冲向给定的尺寸,然后回到起始尺寸,就好像它通过弹性连接到起始尺寸一样。
punch 出拳强度(添加到变换的当前比例)。
duration 补间的持续时间。
vibrato 指示冲头将振动多少。
elastic  表示当向后反弹时向量将超出起始大小多少(0 ​​到 1)。1 在打孔刻度和相反刻度之间产生完全振荡,而 0 仅在打孔刻度和起始刻度之间振荡。

Shake  - 没有 FROM

DOShakePosition(float duration,float/Vector3 strength,int vibrato,float randomness, bool snapping,bool fadeOut)

localPosition用给定的值 摇动变换 。
duration 补间的持续时间。
strength 震动强度。使用 Vector3 而不是浮点数可以让您选择每个轴的强度。
vibrato 指示摇晃的振动程度。
randomness 指示摇晃的随机程度(0 到 180 - 高于 90 的值,所以要小心)。将其设置为 0 将沿单个方向抖动。
snapping 如果为 TRUE,补间将平滑地将所有值对齐为整数。
fadeOut(默认值:true)如果为 TRUE,则抖动将在补间期间自动平滑淡出,否则不会。

DOShakeRotation(float duration,float/Vector3 strength,int vibrato,float randomness,bool fadeOut)

localRotation用给定的值 摇动变换 。
duration 补间的持续时间。
strength 震动强度。使用 Vector3 而不是浮点数可以让您选择每个轴的强度。
vibrato 指示摇晃的振动程度。
randomness 指示摇晃的随机程度(0 到 180 - 高于 90 的值,所以要小心)。将其设置为 0 将沿单个方向抖动。
注意:如果您通过 Vector3 强度参数摇动单个轴,则随机性应至少保留为 90。
fadeOut(默认值:true)如果为 TRUE,则抖动将在补间期间自动平滑淡出,否则不会。

DOShakeScale(float duration,float/Vector3 strength,int vibrato,float randomness,bool fadeOut)

localScale用给定的值 摇动变换 。
duration 补间的持续时间。
strength 震动强度。使用 Vector3 而不是浮点数可以让您选择每个轴的强度。
vibrato 指示摇晃的振动程度。
randomness 指示摇晃的随机程度(0 到 180 - 高于 90 的值,所以要小心)。将其设置为 0 将沿单个方向抖动。
fadeOut(默认值:true)如果为 TRUE,则抖动将在补间期间自动平滑淡出,否则不会。

Path 路径 - 没有 FROM

可混合补间

PRO ONLY ➨ Spiral – 无 FROM

DOPath(Vector3[] waypoints,float duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

position使用选择的路径算法,通过给定的路径航 点补间变换 。
其他选项可通过 SetOptions和 SetLookAt 获得。
注意:此方法还有一个刚体快捷方式,但请注意,它不适用于 Windows Phone/Store(即使使用超兼容版本也不行)。
waypoints 要经过的路标。
duration补间的持续时间。
pathType 路径类型:( Linear直线路径)、 CatmullRom(弯曲 CatmullRom 路径)或 CubicBezier(弯曲路径,每个航路点有 2 个控制点)。
pathMode 路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution (在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor  色路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。
CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:1)路径航路点,2)IN 控制点(前一个航路点上的控制点),3)OUT 控制点(控制点在新航点上)。请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

DOLocalPath(Vector3[] waypoints,float duration,PathType pathType = Linear,PathMode pathMode = Full3D,int resolution = 10,Color gizmoColor = null)

localPosition使用选择的路径算法,通过给定的路径航 点补间变换 。
其他选项可通过 SetOptions和 SetLookAt 获得。
waypoints 要经过的路标。
duration 补间的持续时间。
pathType 路径类型:Linear(直线路径)或 CatmullRom(曲线 CatmullRom 路径)。
pathMode 路径模式,用于确定正确的 LookAt 选项:Ignore(忽略任何通过的 LookAt 选项)、3D、横向滚动 2D、自上而下 2D。
resolution 解析度路径的分辨率(在线性路径的情况下无用):更高的分辨率可以生成更详细的曲线路径,但成本更高。默认为 10,但如果航点之间没有显着的长曲线,则值 5 通常就足够了。
gizmoColor 路径的颜色(当 Gizmo 在“播放”面板中处于活动状态并且补间正在运行时显示)。
CUBIC BEZIER PATHS
CubicBezier路径航路点必须是三的倍数,其中每三组代表:1)路径航路点,2)IN 控制点(前一个航路点上的控制点),3)OUT 控制点(控制点在新航点上)。请记住,第一个航路点始终是自动添加的,并由目标的当前位置确定(并且没有控制点)。

DOBlendableMoveBy( Vector3 by,float duration, bool snapping )

通过给定值补间 Transform 的位置(好像它被设置为相对),以允许其他 DOBlendableMove 补间在同一目标上一起工作的方式,而不是像多个 DOMove 那样相互争斗。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

// Tween a target by moving it by 3,3,0
// while blending another move by -3,0,0 that will loop 3 times
// (using the default OutQuad ease)
transform.DOBlendableMoveBy(new Vector3(3, 3, 0), 3);
transform.DOBlendableMoveBy(new Vector3(-3, 0, 0), 1f).SetLoops(3, LoopType.Yoyo);

DOBlendableLocalMoveBy( Vector3 by,float duration, bool snapping )

通过给定值(就好像它被设置为相对)补间 Transform 的 localPosition,以允许其他 DOBlendableMove 补间在同一目标上一起工作的方式,而不是像多个 DOMove 那样相互争斗。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

DOBlendableRotateBy( Vector3 by,float duration,RotateMode mode)

通过给定值补间变换的旋转(好像它被设置为相对),以允许其他 DOBlendableRotate 补间在同一目标上一起工作的方式,而不是像多个 DORotate 那样相互争斗。
注意:这是一个实验性功能。
mode 表示旋转模式。

DOBlendableLocalRotateBy( Vector3 by,float duration,RotateMode mode)

通过给定值(就好像它被设置为相对)补间 Transform 的 localRotation,以允许其他 DOBlendableRotate 补间在同一个目标上一起工作的方式,而不是像多个 DORotate 那样相互争斗。
注意:这是一个实验性功能。
mode 表示旋转模式。

DOBlendableScaleBy( Vector3 by, float duration )

通过给定值补间 Transform 的 localScale(就好像它被设置为相对一样),以允许其他 DOBlendableScale 补间在同一目标上一起工作的方式,而不是像多个 DOScale 那样相互争斗。

DOSpiral(float duration,Vector3 axis= null,SpiralMode mode = SpiralMode.Expand,float speed = 1,float frequency = 10,float deep = 0,bool snapping = false)

补间一个 Transform 的 localPosition螺旋形状。
期间补间的持续时间。
轴螺旋将围绕其旋转的轴。
模式螺旋运动的类型。
speed 旋转速度。
frequency  旋转频率。较低的值会导致更宽的螺旋。
deep  指示补间应该沿着螺旋轴移动多少。
snapping  如果为 TRUE,补间将平滑地将所有值对齐为整数。

transform.DOSpiral(3, Vector3.forward, SpiralMode.ExpandThenContract, 1, 10);

Tween 

这些是实际上补间其他补间属性的快捷方式。我打赌你不认为你能做到:P

DOTimeScale(float toTimeScale,float duration)

将补间动画设置 timeScale为给定值

C. 其他通用方式

这些是允许以特定方式补间值的附加通用方法。

这些也有 FROM 替代版本,除非另有说明。只需将From链接到 Tweener 以使补间表现为 FROM 补间而不是 TO 补间。

虚拟补间 

static DOTween.Punch( getter, setter, Vector3 direction, float duration, int vibrato, float elasticity)

没有 FROM 版本。 
朝给定方向打 a Vector3,然后回到起始位置,就好像它通过松紧带连接到起始位置一样。
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter 将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
direction 出拳的方向和力度。
duration 补间的持续时间。
vibrato 指示冲头将振动多少,
elasticity 表示向后弹跳时向量将超出起始位置多少(0 ​​到 1)。1 在方向和相反的衰减方向之间产生完全振荡,而 0 只在起始位置和衰减方向之间振荡。

// Punch upwards a Vector3 called myVector in 1 second
DOTween.Punch(()=> myVector, x=> myVector = x, Vector3.up, 1);

static DOTween.Shake(getter,setter,float duration,float/Vector3 strength,int vibrato,float randomness,bool ignoreZAxis)

没有 FROM 版本。 使用给定值沿其 XY 轴
摇动 a 。Vector3
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter 将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
duration 补间的持续时间。
strength 震动强度。使用 Vector3 而不是浮点数可以让您选择每个轴的强度。
vibrato 表示震动会振动多少,
randomness 指示摇晃的随机程度(0 到 360 - 高于 90 的值,所以要小心)。将其设置为 0 将沿单个方向摇晃,并且表现得像随机拳击。
ignoreZAxis Z轴如果 TRUE 仅沿 XY 轴晃动(如果将 Vector3 用于 则不可用 strength)。

// Shake a Vector3 called myVector in 1 second
DOTween.Shake(()=> myVector, x=> myVector = x, 1, 5, 10, 45, false);

static DOTween.ToAlpha( getter, setter, float to, float duration )

将 a 的 alpha Color从其当前值补间到给定值。
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter 将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
to 要达到的最终值。
duration 补间的持续时间。

// Tween the alpha of a color called myColor to 0 in 1 second
DOTween.ToAlpha(()=> myColor, x=> myColor = x, 0, 1);

static DOTween.ToArray( getter, setter, float to, float duration )

没有 FROM 版本。
将 Vector3 补间到给定的结束值。缓动应用于每个段之间,而不是作为一个整体。
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter 将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
to 结束值每个段要达到的最终值。该数组的长度必须与 durations.
duration  每个段的持续时间。该数组的长度必须与 endValues.

例子

// Tween a Vector3 between 3 values, for 1 second each
Vector3[] endValues = new[] { new Vector3(1,0,1), new Vector3(2,0,2), new Vector3(1,4,1) };
float[] durations = new[] { 1, 1, 1 };
DOTween.ToArray(()=> myVector, x=> myVector = x, endValues, durations);

static DOTween.ToAxis( getter, setter, float to, float duration, AxisConstraint axis )

将 a 的单个轴 Vector3从其当前值补间到给定值。
getter 将属性值返回到补间的委托。可以写成这样的 lambda: ()=> myValue
其中 myValue要补间的属性的名称。
setter 将属性值设置为补间的委托。可以写成这样的 lambda: x=> myValue = x
其中 myValue要补间的属性的名称。
to 要达到的最终值。
duration 补间的持续时间。
axis  补间的轴。

// Tween the X of a Vector3 called myVector to 3 in 1 second
DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1);
// Same as above, but tween the Y axis
DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1, AxisConstraint.Y);

static DOTween.To(setter,float startValue,float endValue,float duration)

补间从给定开始到给定结束值的虚拟属性,并实现一个设置器,允许将该值与外部方法或 lambda 一起使用。
setter 使用补间值执行的操作。
startValue 开始的值。
endValue 要达到的价值。
duration 虚拟补间的持续时间。

DOTween.To(MyMethod, 0, 12, 0.5f);
// Where MyMethod is a function that accepts a float parameter
// (which will be the result of the virtual tween)

// Alternatively, with a lambda
DOTween.To(x => someProperty = x, 0, 12, 0.5f);

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用DOTween插件Unity中实现摄像机跟随路径运动的示例代码: 1. 首先,您需要安装DOTween插件。您可以在Unity Asset Store中搜索“DOTween”并安装它。 2. 创建一个空对象并将其命名为“CameraPath”。 3. 将路径上的所有点作为子对象添加到“CameraPath”对象中。每个子对象应该包含一个Transform组件,指定该点的位置。 4. 在“CameraPath”对象上添加一个脚本组件,并使用以下代码: ```csharp using UnityEngine; using DG.Tweening; public class CameraPathController : MonoBehaviour { public Transform[] waypoints; // 存储路径上的所有点 public float duration = 10.0f; // 动画持续时间 public Ease easeType = Ease.Linear; // 动画插值类型 void Start() { Camera.main.transform.DOPath(GetWaypoints(), duration, PathType.CatmullRom).SetEase(easeType); // 创建路径动画 } Vector3[] GetWaypoints() { Vector3[] path = new Vector3[waypoints.Length]; // 创建路径数组 for (int i = 0; i < waypoints.Length; i++) // 将路径上的所有点添加到路径数组中 { path[i] = waypoints[i].position; } return path; } } ``` 在此示例中,我们使用DOTween的DOPath方法来创建路径动画。我们将路径上的所有点存储在“waypoints”数组中,并使用GetWaypoints方法将它们转换为一个Vector3数组。我们还可以指定动画的持续时间和插值类型。 5. 将摄像机添加到场景中,并将其设置为“CameraPathController”脚本中使用的摄像机。 6. 运行场景并观察摄像机沿着路径移动的效果。 请注意,您可以根据需要调整路径点的数量和位置,并在“CameraPathController”脚本中调整动画的持续时间和插值类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值