【Unity3D插件】DoTween插件(二)



一、 Creating a Sequence

序列与 Tweener 类似,但它们不是为属性或值设置动画,而是将其他 Tweener 或序列作为一个组进行动画处理。

序列可以包含在其他序列中,而对层次结构的深度没有任何限制。

已排序的补间不必一个接一个。您可以使用Insert方法重叠补间。

补间(Sequence 或 Tweener)只能嵌套在单个其他 Sequence中,这意味着您不能在多个 Sequence 中重复使用相同的补间。此外,主序列将控制其所有嵌套元素,您将无法单独控制嵌套补间(将序列视为电影时间线,一旦第一次启动就会固定)。
最后,请注意添加到序列的补间不能有无限循环(但根序列可以)。

重要提示:不要使用空序列。

要创建序列,请执行以下两个步骤:

1. 获取一个新的序列来使用并将其存储为参考

static DOTween.Sequence()

返回可以存储和添加补间的可用序列。

Sequence mySequence = DOTween.Sequence();

2. 将补间、间隔和回调添加到您的序列

请注意,所有这些方法都需要在序列开始之前应用(通常是在您创建它之后的下一帧,除非它被暂停),否则它们不会有任何效果。

另请注意,任何嵌套的 Tweener/Sequence 都需要在将其添加到 Sequence 之前完全创建,因为之后它将被锁定。

延迟和循环(当不是无限时)甚至在嵌套的补间中也可以工作

Append(Tween tween)

将给定的补间添加到序列的末尾(表示序列的当前总持续时间)。

mySequence.Append(transform.DOMoveX(45, 1));

AppendCallback( TweenCallback callback)

将给定的回调添加到序列的末尾(表示序列的当前总持续时间)。

mySequence.AppendCallback(MyCallback);

AppendInterval(float interval)

将给定的间隔添加到序列的末尾(表示序列的当前总持续时间)。

mySequence.AppendInterval(interval);

insert(float atPosition,Tween tween)

在给定的时间位置插入给定的补间,从而允许您重叠补间,而不是仅仅将它们一个接一个地放置。

mySequence.Insert(1, transform.DOMoveX(45, 1));

InsertCallback( float atPosition, TweenCallback callback)

在给定的时间位置插入给定的回调。

mySequence.InsertCallback(1, MyCallback);

Join(Tween tween)

在添加到序列的最后一个补间或回调的同一时间位置插入给定的补间。

// The rotation tween will be played together with the movement tween
mySequence.Append(transform.DOMoveX(45, 1));
mySequence.Join(transform.DORotate(new Vector3(0,180,0), 1));

Prepend(Tween tween)

将给定的补间添加到序列的开头,及时推进其余内容。

mySequence.Prepend(transform.DOMoveX(45, 1));

PrependCallback( TweenCallback callback)

将给定的回调添加到序列的开头。

mySequence.PrependCallback(MyCallback);

PrependInterval(float interval)

将给定的间隔添加到序列的开头,及时推进其余内容。

mySequence.PrependInterval(interval);
提示:您可以创建仅由回调组成的序列并将它们用作计时器或类似的东西。

例子

创建序列

// Grab a free Sequence to use
Sequence mySequence = DOTween.Sequence();
// Add a movement tween at the beginning
mySequence.Append(transform.DOMoveX(45, 1));
// Add a rotation tween as soon as the previous one is finished
mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1));
// Delay the whole Sequence by 1 second
mySequence.PrependInterval(1);
// Insert a scale tween for the whole duration of the Sequence
mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));

与前面的示例相同,但使用链接(加上换行符以使事情更清晰):

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1))
  .Append(transform.DORotate(new Vector3(0,180,0), 1))
  .PrependInterval(1)
  .Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));

二、设置、选项和回调

在将设置应用于补间时,DOTween 使用链接方法。或者您可以更改将应用​​于所有新创建的补间的全局默认选项。

全局设置

通用设置

static LogBehaviour DOTween.logBehaviour

默认值: LogBehaviour.ErrorsOnly
根据选择的模式,DOTween 将仅记录错误、错误和警告,或所有内容以及其他信息。
LogBehaviour.ErrorsOnly:记录错误,仅此而已。
LogBehaviour.Default:记录错误和警告。
LogBehaviour.Verbose:记录错误、警告和其他信息。

static bool DOTween.maxSmoothUnscaledTime

默认值: 0.15f
如果 useSmoothDeltaTime为 TRUE,则表示在 timeIndependent 补间的情况下将被视为经过的最长时间。

static bool DOTween.nestedTweenFailureBehaviour

默认值: NestedTweenFailureBehaviour.TryToPreserveSequence
在安全模式处于活动状态且嵌套在序列中的补间失败时的行为。

static bool DOTween.onWillLog<LogType, object>

用于拦截 DOTween 的日志。如果此方法不为 NULL,DOTween 将在通过 Unity 自己的 Debug 日志方法写入日志之前调用它。 如果您希望 DOTween 继续处理日志, 则
返回 ,否则。 这个方法必须返回一个 并接受两个参数: (DOTween 试图记录的 Unity 日志的类型), (DOTween 想要记录的消息)。 TRUEFALSE
boolLogTypeobject

static bool DOTween.showUnityEditorReport

默认值: FALSE
如果设置为 TRUE,您将在退出播放模式时收到 DOTween 报告(仅在编辑器中)。有助于了解您达到了多少最大 Tweeners 和 Sequences 并相应地优化您的最终项目。
请注意,这会稍微降低您在 Unity Editor 中的性能。

static float DOTween\.useSafeMode

默认值: 1
全局 timeScale 应用于所有补间,包括常规和独立。

static bool DOTween.useSafeMode

默认值: TRUE
如果设置为 TRUE,补间会稍微慢一些但更安全,允许 DOTween 自动处理诸如在补间运行时破坏目标之类的事情。
将其设置为 FALSE 意味着您必须亲自处理在其目标被摧毁或以某种方式使其无效之前杀死一个补间。
警告:在 iOS 上,safeMode 仅在剥离级别设置为“Strip Assemblies”或脚本调用优化设置为“Slow and Safe”时才有效,而在 Windows 10 WSA 上,如果选择了 Master Configuration 和 .NET,它将不起作用。

static bool DOTween.useSmoothDeltaTime

默认值: FALSE
如果为 TRUE,DOTween 将使用 Time.smoothDeltaTime代替 Time.deltaTimefor UpdateType.NormalUpdateType.Latetweens(除非它们设置为 timeScaleIndependent,在这种情况下,将使用最后一个时间步之间的值 maxSmoothUnscaledTime)。将此设置为 TRUE 将导致更流畅的动画。

static DOTween.SetTweensCapacity( int maxTweeners, int maxSequences )

为了更快,DOTween 限制了您可以拥有的活动补间的最大数量。如果您超出该限制,请不要担心:它会自动增加。尽管如此,如果您已经知道您需要比默认的最大 Tweeners/Sequences(即 200 个 Tweeners 和 50 个序列)更多(或更少),您可以在启动时设置 DOTween 的容量,并避免在自动提升时出现打嗝。

// Set max Tweeners to 2000 and max Sequences to 100
DOTween.SetTweensCapacity(2000, 100);

应用于所有新创建的补间的设置

static bool DOTween.defaultAutoKill

默认值: TRUE
默认 autoKill 行为应用于所有新创建的补间。

static  AutoPlay DOTween.defaultAutoPlay

默认值: AutoPlay.All
默认自动播放行为应用于所有新创建的补间。

static float DOTween.defaultEaseOvershoot或Amplitude

默认值: 1.70158f
用于缓动的默认过冲/幅度。

static float DOTween.defaultEasePeriod

默认值: 0
用于缓动的默认时间段。

static Ease DOTween.defaultEaseType

默认值: Ease.OutQuad
默认缓动应用于所有新创建的 Tweeners。

static LoopType DOTween.defaultLoopType

默认值: LoopType.Restart
默认循环类型应用于所有新创建的涉及循环的补间。

static bool DOTween.deaultRecycleable

默认值: false
默认回收行为应用于所有新创建的补间。

static bool DOTween.defaultTimeScaleIndependent

默认值: false
设置是否默认考虑 Unity 的 timeScale。

static UpdateType DOTween.defaultUpdateType

默认值: UpdateType.Normal
默认值 UpdateType应用于所有新创建的补间。

补间和序列设置(Tweener and Sequence settings)

实例属性

float timeScale

默认值: 1
设置补间的内部 timeScale。

// Sets the tween so that it plays at half the speed
myTween.timeScale = 0.5f;
提示:这个值可以通过另一个补间来实现平滑的慢动作效果。

链式设置

Chained settings

这些设置可以链接到所有类型的补间。
您还可以在补间运行时链接它们(除了SetAsSetInverted和)SetLoopsSetRelative

SetAs( Tween tween \ TweenParams tweenParams )

将补间的参数(id、ease、loops、delay、timeScale、callbacks 等)设置为给定参数(不复制特定的 SetOptions设置:每次都需要手动应用)或给定 TweenParams对象。
如果补间已经开始,则无效。

transform.DOMoveX(4, 1).SetAs(myOtherTween);

SetAutoKill( bool autoKillOnCompletion = true )

如果 autoKillOnCompletion设置为 TRUE,补间将在完成后立即被终止,否则它将保留在内存中,您将能够重用它。
注意:默认情况下补间在完成时会自动终止(因此仅当您计划 FALSE用作参数时才需要使用此方法),但您可以在 DOTween 的实用程序面板中更改默认行为。

transform.DOMoveX(4, 1).SetAutoKill(false);

SetEase( Ease easeType \ AnimationCurve animCurve \ EaseFunction customEase )

设置补间的缓和度。
如果应用于 Sequence 而不是 Tweener,则缓动将应用于整个 Sequence ,就好像它是单个动画时间线一样。默认情况下,序列始终具有 Ease.Linear,独立于全局默认缓动设置。
你可以给它传递一个默认的缓动( Ease- 查看默认缓动曲线的外观,查看 easings.net)、一个 AnimationCurve或自定义缓动函数( 参见示例)。
此外,可以设置以下可选参数:它们仅适用于 Back 和 Elastic 缓动。
注意: BackElastic缓动(意味着任何低于或超出开始和结束值的缓动)不适用于路径。
过冲与 Back ease 一起使用的最终过冲(默认值为 1.70158),或与 Flash ease 一起使用的闪光次数。
振幅与 Elastic ease 一起使用的最终幅度(默认值为 1.70158)。
时期与 Elastic 轻松一起使用的最终期限(默认为 0),或与 Flash 轻松一起使用的权力。

transform.DOMoveX(4, 1).SetEase(Ease.InOutQuint);
transform.DOMoveX(4, 1).SetEase(myAnimationCurve);
transform.DOMoveX(4, 1).SetEase(MyEaseFunction);

特殊缓动
Flash, InFlash, OutFlash, InOutFlash:这些缓动将对您补间的属性应用闪烁效果。下图应该很清楚这一点。
过冲指示要应用的闪烁总数。偶数将在起始值结束补间,而奇数将在结束值结束补间。
时期表示缓和时间的力量,必须在-1和1之间。
0平衡, 1充分削弱时间缓和, -1开始完全削弱缓和并在结束时赋予它权力。
额外:EaseFactory
EaseFactory.StopMotion是一个额外的层,您可以添加到您的缓动中,使它们表现得好像在以定格动画播放(实际上,它们将在补间时模拟给定的 FPS)。它可以作为包装器轻松应用。
EaseFactory.StopMotion(int fps, Ease\AnimationCurve\EaseFunction ease)

transform.DOMoveX(4, 1).SetEase(EaseFactory.StopMotion(5, Ease.InOutQuint));

SetId(object id )

为补间设置一个 ID(然后可以将其用作 DOTween 的静态方法的过滤器)。它可以是一个 int、一个字符串、一个对象或其他任何东西。
注意:使用 intor stringID 使过滤操作更快(其中 int也比 更快 string)。

transform.DOMoveX(4, 1).SetId("supertween");

SetInverted()

实验:反转此补间,使其从结尾播放到开头(向后播放实际上会从开头播放到结尾)。
注意:如果您只想向后播放补间,您可以简单地使用 tween.PlayBackwards。
如果补间已经开始或嵌套在序列中,则无效。

tween.SetInverted();

SetLink( GameObject target,LinkBehaviour linkBehaviour = LinkBehaviour.KillOnDestroy )

将此补间链接到 GameObject 并根据其活动状态分配行为。这也将导致在 GameObject 被销毁时自动终止补间。
注意:如果将补间添加到序列中,则无效。
target 链接目标(与通过 设置的目标无关 SetTarget)。
linkBehaviour  使用的行为 ( LinkBehaviour.KillOnDestroy总是被评估——并默认设置——即使你选择了另一个)。

transform.DOMoveX(4, 1).SetLink(aGameObject, LinkBehaviour.PauseOnDisableRestartOnEnable);

SetLoops( int loops, LoopType loopType = LoopType.Restart )

设置补间的循环选项 ( Restart, Yoyo, Incremental)。
如果补间已经开始,则无效。此外,如果补间在序列内,则不会应用无限循环。
设置 loops-1将使补间循环无限。
LoopType.Restart: 当一个循环结束时,它将从头开始。
LoopType.Yoyo: 当一个循环结束时,它将向后播放,直到完成另一个循环,然后再次向前,然后再次向后,依此类推。
LoopType.Incremental: 每次循环结束时,它的 endValue 和它的 startValue 之间的差异将被添加到 endValue,从而创建随着每个循环周期增加它们的值的补间。 此循环类型仅适用于Tweeners.

transform.DOMoveX(4, 1).SetLoops(3, LoopType.Yoyo);

SetRecyclable(bool recyclable)

设置补间的回收行为。如果您不设置它,那么将使用默认值(通过 DOTween.Init或 DOTween.defaultRecyclable设置)。
recyclable 如果 TRUE 补间将在被杀死后被回收,否则将被销毁。

transform.DOMoveX(4, 1).SetRecyclable(true);

SetRelative( bool isRelative = true )

如果 isRelative为 TRUE,则将补间设置为相对(endValue 将被计算为 startValue + endValue而不是直接使用)。在序列的情况下,将所有嵌套补间设置为相对。
重要提示:对 From tween 没有影响,因为在这种情况下,您可以在链接 From设置时直接选择 tween 是否是相对的。
如果补间已经开始,则无效。

transform.DOMoveX(4, 1).SetRelative();

SetTarget(object target)

设置补间的目标(然后可以用作 DOTween 的静态方法的过滤器)。这在使用通用补间方法时很有用,而快捷方式会自动将其设置为快捷方式的目标。
注意:谨慎使用。如果您只想为补间设置一个 ID,请改用 SetId

DOTween.To(()=> myInstance.aFloat, (x)=> myInstance.aFloat = x, 2.5f, 1).SetTarget(myInstance);

SetUpdate( UpdateType updateType, bool isIndependentUpdate = false )

设置补间的更新类型 ( Normal, LateFixed) 并最终告诉它忽略 Unity 的 timeScale。
如果补间嵌套在序列中,则无效(只有序列的最终SetUpdate会计算在内)。
更新类型使用 UpdateType方法:
UpdateType.Normal:在 Update 调用期间更新每一帧。
UpdateType.Late:在 LateUpdate 调用期间更新每一帧。
UpdateType.Fixed:使用 FixedUpdate 调用进行更新。
UpdateType.Manual:通过手动 DOTween.ManualUpdate调用进行更新。
是独立更新如果为 TRUE,补间将忽略 Unity 的 Time.timeScale。
注意: independentUpdate 也适用, UpdateType.Fixed但在这种情况下不推荐使用(因为在 timeScale 0 FixedUpdate 不会运行)。

transform.DOMoveX(4, 1).SetUpdate(UpdateType.Late, true);

链式回调(Chained callbacks)

OnComplete( TweenCallback callback)

设置将在补间完成时触发的回调,包括所有循环。

transform.DOMoveX(4, 1).OnComplete(MyCallback);

OnKill( TweenCallback callback)

设置将在补间被杀死时触发的回调。

transform.DOMoveX(4, 1).OnKill(MyCallback);

OnPlay( TweenCallback callback)

设置将在补间设置为播放状态时触发的回调,在任何最终延迟之后。每次补间从暂停状态恢复播放时也会调用。

transform.DOMoveX(4, 1).OnPlay(MyCallback);

OnPause( TweenCallback callback)

设置将在补间状态从播放变为暂停时触发的回调。如果补间将 autoKill 设置为 FALSE,则在补间完成时也会调用此方法。

transform.DOMoveX(4, 1).OnPause(MyCallback);

OnRewind( TweenCallback callback)

设置将在补间倒带时触发的回调,通过调用 Rewind或在向后播放时到达开始位置。
注意:倒带已经倒带的补间不会触发此回调。

transform.DOMoveX(4, 1).OnRewind(MyCallback);

OnStart( TweenCallback callback)

设置将在补间启动时触发一次的回调(意味着当补间第一次设置为播放状态时,在任何最终延迟之后)。

transform.DOMoveX(4, 1).OnStart(MyCallback);

OnStepComplete( TweenCallback callback)

设置一个回调,每次补间完成一个循环周期时都会触发(这意味着,如果您将循环设置为 3, OnStepComplete将被调用 3 次, OnComplete而在最后只调用一次)。

transform.DOMoveX(4, 1).OnStepComplete(MyCallback);

OnUpdate( TweenCallback callback)

设置每次补间更新时都会触发的回调。

transform.DOMoveX(4, 1).OnUpdate(MyCallback);

OnWaypointChange( TweenCallback<int> callback)

设置将在路径补间的当前航点更改时触发的回调。
这是一个特殊的回调,与其他回调不同,它需要接受一个类型的参数int(这将是新更改的航点索引)。

void Start() {
   transform.DOPath(waypoints, 1).OnWaypointChange(MyCallback);
}
void MyCallback(int waypointIndex) {
   Debug.Log("Waypoint index changed to " + waypointIndex);
}

顺便说一句,附加到嵌套补间的回调仍然会以正确的顺序工作。

如果你想使用带参数的回调,lambdas 来救援:
// Callback without parameters
transform.DOMoveX(4, 1).OnComplete(MyCallback);
// Callback with parameters
transform.DOMoveX(4, 1).OnComplete(()=>MyCallback(someParam, someOtherParam));

特定于 Tweener 的设置和选项

这些设置特定于 Tweeners,对序列没有影响。
除此之外SetEase,在补间运行时链接这些设置将无效。

From(bool isRelative = false)

将补间更改为 FROM 补间(而不是常规的 TO 补间),立即将目标发送到其给定值,然后补间到其先前的值。
必须在任何其他设置之前链接,除了补间特定选项
是相对的如果 TRUE 将补间设置为相对(FROM 值将被计算为 currentValue + endValue而不是直接使用)。使用 FROM tweens 您需要使用此参数而不是 SetRelative.

// Regular TO tween
transform.DOMoveX(2, 1);
// FROM tween
transform.DOMoveX(2, 1).From();
// FROM tween but with relative FROM value
transform.DOMoveX(2, 1).From(true);

From( T fromValue, bool setImmediately = true, bool isRelative = false )

允许直接设置补间的起始值,而不是在补间开始时依赖目标的值。
必须在任何其他设置之前链接,除了补间特定选项
从值补间开始的值。
立即设置如果为 TRUE,目标将立即设置为 fromValue,否则它将等待补间开始。
是相对的如果 TRUE 将补间设置为相对(FROM 值将被计算为 currentValue + fromValue而不是直接使用)。使用 FROM tweens 您需要使用此参数而不是 SetRelative.

SetDelay(float delay)

为补间设置延迟启动。
如果补间已经开始,则无效。
如果链接到 Sequence 不会添加真正的延迟,而只是在 Sequence 的开头添加一个间隔(与PrependInterval相同)。使用SetDelay下面的重载来改变这种行为。

transform.DOMoveX(4, 1).SetDelay(1);

SetDelay(float delay,bool asPrependedIntervalIfSequence )

使用选项设置补间的延迟启动,以选择在序列的情况下如何应用延迟。
如果补间已经开始,则无效。
asPrependedIntervalIfSequence仅用于 Sequences:如果 FALSE 将延迟设置为一次性发生(对于 的默认设置 Tweeners),否则作为将在每个循环周期开始时重复的序列间隔。

transform.DOMoveX(4, 1).SetDelay(1);

SetSpeedBased( bool isSpeedBased = true )

如果 isSpeedBased为 TRUE,则将补间设置为基于速度(持续时间将表示补间移动 x 秒的单位/度数)。注意:如果您希望您的速度保持不变,请将轻松设置为 Ease.Linear
如果补间已经开始或者它是一个序列(或序列内的嵌套补间),则没有效果。

transform.DOMoveX(4, 1).SetSpeedBased();

设置选项(SetOptions)

一些 Tweeners 有特定的特殊选项可供您使用,具体取决于您正在补间的事物的类型。这一切都是自动的:如果 Tweener 具有特定选项,您将看到该 Tweener 的特定SetOptions方法,否则您不会。这是魔法!

请注意,这些选项通常仅在通过通用方式创建补间时可用,而快捷方式的主要创建方法中已包含相同的选项

要记住的重要一点是,虽然所有其他设置可以以任何顺序链接在一起,但SetOptions 必须在补间创建函数之后立即链接,否则将不再可用。

通用补间特定选项(已包含在相应的补间快捷方式中)

Color tween➨ SetOptions( bool alphaOnly )

设置颜色补间的特定选项。
仅 alpha如果 TRUE 仅颜色的 alpha 将被补间。

DOTween.To(()=> myColor, x=> myColor = x, new Color(1,1,1,0), 1).SetOptions(true);

float tween ➨ SetOptions( bool snapping )

设置浮点补间的特定选项。
捕捉如果 TRUE 值将平滑地捕捉到整数。

DOTween.To(()=> myFloat, x=> myFloat = x, 45, 1).SetOptions(true);

Quaternion tween➨ SetOptions( bool useShortest360Route )

为四元数数组的补间设置特定选项。
使用Shortest360路线如果为 TRUE( 默认值),则旋转将采用最短路径并且不会旋转超过 360°。如果为 FALSE,则将完全考虑轮换。如果补间设置为相对,则始终为 FALSE。

DOTween.To(()=> myQuaternion, x=> myQuaternion = x, new Vector3(0,180,0), 1).SetOptions(true);

Rect tween➨ SetOptions( bool snapping )

为 Rect 的补间设置特定选项。
捕捉如果 TRUE 值将平滑地捕捉到整数。

DOTween.To(()=> myRect, x=> myRect = x, new Rect(0,0,10,10), 1).SetOptions(true);

String tween➨ SetOptions( bool richTextEnabled, ScrambleMode scrambleMode = ScrambleMode.None,字符串scrambleChars = null )

设置字符串补间的特定选项。
启用富文本如果为 TRUE(默认),富文本将在动画时被正确解释,否则所有标签将被视为普通文本。
争夺要使用的加扰模式类型(如果有)。
如果与 ScrambleMode.None字符串不同,则会从字符的随机动画中出现,否则它将有规律地自行组合。
None默认):不应用加扰。
All/Uppercase/Lowercase/Numerals: 加扰时使用的字符类型。
Custom: 将使用 scrambleChars.
加扰字符包含用于自定义加扰的字符的字符串。使用尽可能多的字符(最少 10 个),因为 DOTween 使用快速打乱模式,可以使用更多字符提供更好的结果。

DOTween.To(()=> myString, x=> myString = x, "hello world", 1).SetOptions(true, ScrambleMode.All);

Vector2/3/4 tween ➨ SetOptions( AxisConstraint约束, bool snapping )

为 Vector2/3/4 的补间设置特定选项。
约束告诉补间只为给定的轴设置动画。
捕捉如果 TRUE 值将平滑地捕捉到整数(非常适合像素完美移动)。

DOTween.To(()=> myVector, x=> myVector = x, new Vector3(2,2,2), 1).SetOptions(AxisConstraint.Y, true);

Vector3Array tween ➨ SetOptions( bool snapping )

为 Vector3 数组的补间设置特定选项。
捕捉如果 TRUE 值将平滑地捕捉到整数(非常适合像素完美移动)。

DOTween.ToArray(()=> myVector, x=> myVector = x, myEndValues, myDurations).SetOptions(true);

DOPath Specific Options

Path tween➨ SetOptions( bool closePath, AxisConstraint lockPosition = AxisConstraint.None, AxisConstraint lockRotation = AxisConstraint.None )

设置路径补间的特定选项(通过 DOPath快捷方式创建)。
关闭路径如果为 TRUE,路径将自动关闭。
锁定位置最终要锁定的运动轴。如果像这样分隔它们,则可以输入多个轴:
AxisConstrain.X | AxisConstraint.Y.
锁定旋转最终要锁定的旋转轴。如果像这样分隔它们,则可以输入多个轴:
AxisConstrain.X | AxisConstraint.Y.

transform.DOPath(path, 4f).SetOptions(true, AxisConstraint.X);

Path tween➨ SetLookAt( Vector3 lookAtPosition/lookAtTarget/lookAhead, Vector3 forwardDirection, Vector3 up, bool stableZRotation )

路径补间的其他 LookAt 选项(通过 DOPath快捷方式创建)。根据您选择的过载,它可以:a) 将目标定向到给定位置,b) 将目标定向到给定变换,c) 将目标定向到具有给定前瞻的路径。
必须直接链接到补间创建方法或 SetOptions方法。
看位置要看的位置。
看向目标要看的目标。
展望定向到路径时使用的前瞻百分比(0 到 1)。
前进方向可选重载:被视为“前进”的最终方向。
默认值:转换的常规正向端。
向上Optiona 重载:定义向上方向的向量。
默认值: Vector3.up
稳定Z旋转可选重载:如果设置为 TRUE,则不会沿 Z 轴旋转目标。

transform.DOPath(path, 4f).SetLookAt(new Vector3(2,1,3));
transform.DOPath(path, 4f).SetLookAt(someOtherTransform);
transform.DOPath(path, 4f).SetLookAt(0.01f);

TweenParams

如果您之前使用过 HOTween,您就会知道 TweenParms(现在称为 TweenParams):它们用于存储设置,然后您可以将这些设置应用于多个 tween。与 HOTween 的区别在于它们根本不是必需的,因为现在设置链接是直接在补间上完成的。相反,它们在这里只是作为一个额外的实用程序类

要使用它,请创建一个新的 TweenParams 实例或Clear()现有实例,然后像使用常规补间链接一样添加设置。要将它们应用于补间,然后使用SetAs.

// Store settings for an infinite looping tween with elastic ease
TweenParams tParms = new TweenParams().SetLoops(-1).SetEase(Ease.OutElastic);
// Apply them to a couple of tweens
transformA.DOMoveX(15, 1).SetAs(tParms);
transformB.DOMoveY(10, 1).SetAs(tParms);

更多关于链接

为了清楚起见,您不需要一次链接一件事,您可以这样做:

transform.DOMoveX(45, 1).SetDelay(2).SetEase(Ease.OutQuad).OnComplete(MyCallback);

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用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”脚本中调整动画的持续时间和插值类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值