Tween
使节点的属性随时间平滑地变化。
描述
需要让数值属性在一定范围内做插值的动画可以使用 Tween。Tween 这个名字来自动画技术 in-betweening(补间动画):你指定关键帧,而计算机则在关键帧之间插补出其他帧。
Tween
比 AnimationPlayer 更适合于事先不知道最终数值的动画。例如,插值动态选择的相机变焦值最好用 Tween
节点完成;用 AnimationPlayer 节点做同样的事情会很困难。
下面是一个简短的使用例子,让一个 2D 节点在两个位置之间平滑移动:
var tween = get_node("Tween")
tween.interpolate_property($Node2D, "position",
Vector2(0, 0), Vector2(100, 100), 1,
Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
tween.start()
许多方法都需要提供属性名称,比如上面的 "position"
。你可以通过在检查器中将鼠标悬停在该属性上找到正确的属性名称。你也可以通过使用 "property:component"
直接提供一个属性的分量(例如 position:x
),动画就只会对这个分量起效。
许多方法接受过渡类型 trans_type
和缓动类型 easy_type
。前者接受 TransitionType 常量,指的是处理动画时间的方式(请参阅 easings.net 的一些例子)。后者接受 EaseType 常量,控制 trans_type
应用于插值的位置(开头、结尾、或两处都是)。如果你不知道该选哪个过渡和缓动,你可以用 EASE_IN_OUT 尝试不同的 TransitionType 常数,然后使用看起来最好的那个。
属性
| ||
| ||
|
方法
follow_method ( Object object, String method, Variant initial_val, Object target, String target_method, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
follow_property ( Object object, NodePath property, Variant initial_val, Object target, NodePath target_property, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
get_runtime ( ) const | |
interpolate_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null ) | |
interpolate_deferred_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null ) | |
interpolate_method ( Object object, String method, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
interpolate_property ( Object object, NodePath property, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
is_active ( ) const | |
remove_all ( ) | |
reset_all ( ) | |
resume_all ( ) | |
void | set_active ( bool active ) |
start ( ) | |
stop_all ( ) | |
targeting_method ( Object object, String method, Object initial, String initial_method, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
targeting_property ( Object object, NodePath property, Object initial, NodePath initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 ) | |
tell ( ) const |
信号
- tween_all_completed ( )
当补间中的所有进程结束时触发。
补间结束时触发。
当补间开始时触发。
动画的每一步都触发。
枚举
enum TweenProcessMode:
TWEEN_PROCESS_PHYSICS = 0 —- 补间通过
_physics_process
回调进行更新。TWEEN_PROCESS_IDLE = 1 —- 补间通过
_process
回调进行更新。
enum TransitionType:
TRANS_LINEAR = 0 —- 动画是线性插值的。
TRANS_SINE = 1 —- 动画使用正弦函数进行插值。
TRANS_QUINT = 2 —- 动画是用五次方,即5的幂函数进行插值的。
TRANS_QUART = 3 —- 动画是用一个四次方,即4的幂函数插值的。
TRANS_QUAD = 4 —- 动画是用二次方,即2的幂函数插值的。
TRANS_EXPO = 5 —- 动画是用一个指数,即x的幂函数插值的。
TRANS_ELASTIC = 6 —- 动画弹性插值,在边缘摆动。
TRANS_CUBIC = 7 —- 动画是用一个立方,即3的幂函数插值的。
TRANS_CIRC = 8 —- 动画使用平方根的函数进行插值。
TRANS_BOUNCE = 9 —- 动画通过在末尾弹跳插值。
TRANS_BACK = 10 —- 动画在末端回放插值。
enum EaseType:
EASE_IN = 0 —- 插值开始缓慢,并加速接近结束。
EASE_OUT = 1 —- 插值开始快速,接近结束时减慢。
属性说明
- TweenProcessMode playback_process_mode
Default |
|
Setter | set_tween_process_mode(value) |
Getter | get_tween_process_mode() |
补间动画处理线程。参阅TweenProcessMode。
- float playback_speed
Default |
|
Setter | set_speed_scale(value) |
Getter | get_speed_scale() |
补间的速度乘数。例如,设置为1.0
为正常速度,2.0
为正常速度的2倍,或者0.5
为正常速度的一半。值为0
时,动画会暂停,另请参阅set_active或stop_all。
- bool repeat
Default |
|
Setter | set_repeat(value) |
Getter | is_repeat() |
如果true
,补间循环。
方法说明
- bool follow_method ( Object object, String method, Variant initial_val, Object target, String target_method, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
跟随 object
的 method
方法,将其返回值应用于 target
的 target_method
方法。从 initial_val
开始,持续时间为 duration
秒,延迟为 delay
秒。方法是用连续的值来调用的。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- bool follow_property ( Object object, NodePath property, Variant initial_val, Object target, NodePath target_property, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
跟随 object
的 property
属性,将其应用于 target
的 target_property
属性。从 initial_val
开始,持续时间为 duration
秒,延迟为 delay
秒。方法是用连续的值来调用的。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- float get_runtime ( ) const
返回所有补间结束所需的总时间。如果你有两个补间,一个持续 10 秒,另一个 20 秒,它会返回 20 秒,因为到那个时候,所有的补间都会完成。
- bool interpolate_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null )
在 duration
持续时间后,调用 object
的 callback
回调。arg1
-arg5
是要传递给回调的参数。
- bool interpolate_deferred_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null )
在 duration
持续时间后,在主线程上调用 object
的 callback
回调(类似 Object.call_deferred)。arg1
-arg5
是要传递给回调的参数。
- bool interpolate_method ( Object object, String method, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
将 object
的 method
方法从起始值 initial_val
动画到最终值 final_val
,持续时间为 duration
秒,延迟为 delay
秒。方法是用连续的值来调用的。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- bool interpolate_property ( Object object, NodePath property, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
将 object
的 property
属性从起始值 initial_val
动画到最终值 final_val
,持续时间为 duration
秒,延迟为 delay
秒。将起始值设置为 null
会使用该属性的当前值。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- bool is_active ( ) const
如果当前有补间正在运行,则返回 true
。
注意:这个方法不考虑已经结束的补间。
停止动画并移除补间,指定其对象和属性或方法的对。默认情况下,除非指定key
,否则所有的补间都会被移除。
- bool remove_all ( )
停止动画,并删除所有补间。
将补间重置到它的初始值,即给定的值,而不是补间之前的值,指定其对象和属性或方法的对。默认情况下,除非指定了key
,否则所有的补间都被移除。
- bool reset_all ( )
将所有的补间重置为它们的初始值,即给出的值,而不是补间之前的值。
继续停止的补间制作动画,指定其对象和属性或方法的对。默认情况下,除非指定了key
,否则所有的补间都恢复。
- bool resume_all ( )
继续动画所有停止补间。
设置插值为指定的time
,单位秒。
- void set_active ( bool active )
激活或停用补间。别请参阅stop_all和resume_all。
- bool start ( )
开始补间。您可以在此之前和之后定义动画。
停止补间,指定其对象和属性或方法的对。除非指定了 key
,默认情况下,所有补间都会停止。
- bool stop_all ( )
停止动画所有补间。
- bool targeting_method ( Object object, String method, Object initial, String initial_method, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
将 object
的 method
方法做动画。以 initial_method
方法的返回值作为起始值,最终值为 final_val
,持续时间为 duration
秒,延迟为 delay
秒。方法是用连续的值来调用的。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- bool targeting_property ( Object object, NodePath property, Object initial, NodePath initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )
将 object
的 property
属性做动画。以 initial
对象的 initial_val
属性的当前做作为起始值,最终值为 final_val
,持续时间为 duration
秒,延迟为 delay
秒。
对 trans_type
使用 TransitionType 类型的值,对 ease_type
使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。
- float tell ( ) const
返回补间的当前时间。