AnimationPlayer¶
继承: AnimationMixer < Item < Object
用于动画播放的节点。
描述¶
动画播放器用于动画的通用播放。它包含AnimationLibrary资源字典和动画过渡之间的自定义混合时间。
一些方法和属性使用单个键直接引用动画。这些键被格式化为库的键,然后是正斜杠,然后是库中动画的键,例如“移动/运行”。如果库的键是空字符串(称为默认库),则省略正斜杠,因为它与库使用的键相同。
对于更复杂的动画,例如具有非平凡时间的动画,AnimationPlayer比Tween更适合。如果动画轨道编辑器比在代码中执行更方便,它也可以在Tween上使用。
更新动画的目标属性发生在流程帧中。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
animation_get_next(animation_from: StringName) const |
|
void |
animation_set_next(animation_from: StringName, animation_to: StringName) |
void |
|
get_blend_time(animation_from: StringName, animation_to: StringName) const |
|
get_method_call_mode() const |
|
get_playing_speed() const |
|
get_process_callback() const |
|
get_root() const |
|
get_section_end_time() const |
|
get_section_start_time() const |
|
has_section() const |
|
is_playing() const |
|
void |
pause() |
void |
play(name: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) |
void |
play_backwards(name: StringName = &"", custom_blend: float = -1) |
void |
play_section(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) |
void |
play_section_backwards(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1) |
void |
play_section_with_markers(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) |
void |
play_section_with_markers_backwards(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1) |
void |
play_with_capture(name: StringName = &"", duration: float = -1.0, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false, trans_type: TransitionType = 0, ease_type: EaseType = 0) |
void |
queue(name: StringName) |
void |
|
void |
seek(seconds: float, update: bool = false, update_only: bool = false) |
void |
set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) |
void |
|
void |
|
void |
|
void |
set_section(start_time: float = -1, end_time: float = -1) |
void |
set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"") |
void |
信号¶
animation_changed(old_name: StringName, new_name: StringName) 🔗
在前一个动画完成后播放排队的动画时发出。另请参阅queue()。
注意:通过play()或AnimationTree更改动画时不会发出信号。
current_animation_changed(name: String) 🔗
current_animation改变时发出。
枚举¶
enum AnimationProcessCallback: 🔗
AnimationProcessCallback ANIMATION_PROCESS_PHYSICS = 0
已弃用: 见 AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS。
AnimationProcessCallback ANIMATION_PROCESS_IDLE = 1
已弃用: 见 AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE。
AnimationProcessCallback ANIMATION_PROCESS_MANUAL = 2
已弃用: 见 AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL。
enum AnimationMethodCallMode: 🔗
AnimationMethodCallMode ANIMATION_METHOD_CALL_DEFERRED = 0
已弃用: 见 AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED。
AnimationMethodCallMode ANIMATION_METHOD_CALL_IMMEDIATE = 1
已弃用: 见 AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE。
属性说明¶
如果正在播放,则为当前动画的键,否则为上次播放的动画。设置后,会更改动画,但除非已经播放,否则不会播放。另请参见current_animation。
场景加载时播放的动画键。
String current_animation = "" 🔗
当前播放动画的键。如果没有播放动画,则属性的值为空字符串。更改此值不会重新启动动画。有关播放动画的更多信息,请参阅play()。
注意:当此属性出现在检查器中时,它不会被编辑,也不会保存在场景中。此属性主要用于获取当前正在播放的动画,并在内部用于动画播放轨道。有关详细信息,请参阅Animation。
float current_animation_length 🔗
float get_current_animation_length()
当前播放动画的长度(以秒为单位)。
float current_animation_position 🔗
float get_current_animation_position()
当前播放动画的位置(以秒为单位)。
bool movie_quit_on_finish = false 🔗
如果true并且引擎在Movie Maker模式下运行(参见MovieWriter),则在此AnimationPlayer中播放完动画后立即使用SceneTree.quit()。因此,当引擎退出时会打印一条消息。
注意:这遵循与AnimationMixer.animation_finished信号相同的逻辑,因此如果动画设置为循环,它不会退出引擎。
bool playback_auto_capture = true 🔗
如果true,则在自动播放之前执行AnimationMixer.capture()。这意味着仅使用默认参数执行play_with_capture()而不是play()。
注意:仅当动画包含捕获轨道时才执行捕获插值。另见Animation.UPDATE_CAPTURE。
float playback_auto_capture_duration = -1.0 🔗
另请参见play_with_capture()和AnimationMixer.capture()。
如果playback_auto_capture_duration为负值,则持续时间设置为当前位置和第一个键之间的间隔。
EaseType playback_auto_capture_ease_type = 0 🔗
捕获插值的简易类型。另请参阅EaseType。
TransitionType playback_auto_capture_transition_type = 0 🔗
void set_auto_capture_transition_type(value: TransitionType)
TransitionType get_auto_capture_transition_type()
捕获插值的转换类型。另请参阅TransitionType。
float playback_default_blend_time = 0.0 🔗
混合动画的默认时间。范围从0到4096,精度为0.01。
速度缩放比。例如,如果此值为1,则动画以正常速度播放。如果是0.5,则以一半速度播放。如果是2,则以双倍速度播放。
如果设置为负值,则反向播放动画。如果设置为0,则动画不会前进。
方法说明¶
StringName animation_get_next(animation_from: StringName) const 🔗
返回在animation_from动画之后排队播放的动画的键。
void animation_set_next(animation_from: StringName, animation_to: StringName) 🔗
当animation_to动画完成时触发animation_from动画。
void clear_queue() 🔗
清除所有排队、未播放的动画。
float get_blend_time(animation_from: StringName, animation_to: StringName) const 🔗
返回两个动画之间的混合时间(以秒为单位),由它们的键引用。
AnimationMethodCallMode get_method_call_mode() const 🔗
已弃用: 请改用 AnimationMixer.callback_mode_method。
返回用于“调用方法”轨道的调用模式。
float get_playing_speed() const 🔗
返回当前动画的实际播放速度,如果不播放,则返回0。此速度是调用play()方法时指定的speed_scale属性乘以custom_speed参数。
如果当前动画向后播放,则返回负值。
AnimationProcessCallback get_process_callback() const 🔗
已弃用: 请改用 AnimationMixer.callback_mode_process。
返回要在其中更新动画的进程通知。
PackedStringArray get_queue() 🔗
返回当前排队播放的动画键列表。
已弃用: 使用 AnimationMixer.root_node 代替。
返回节点路径引用将从其旅行的节点。
float get_section_end_time() const 🔗
返回当前正在播放的部分的结束时间。
float get_section_start_time() const 🔗
返回当前正在播放的部分的开始时间。
如果动画当前正在播放部分,则返回true。
返回true如果动画当前正在播放(即使speed_scale和/或custom_speed是0)。
void pause() 🔗
暂停当前正在播放的动画。current_animation_position将被保留,调用play()或play_backwards()不带参数或与assigned_animation具有相同的动画名称将恢复动画。
另请参见stop()。
void play(name: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗
使用键name播放动画。可以设置自定义混合时间和速度。
from_end选项仅影响切换到新动画轨道时,或者如果相同的轨道但在开始或结束时。它不影响恢复动画中途暂停的播放。如果custom_speed为负数并且from_end为true,动画将向后播放(相当于调用play_backwards())。
AnimationPlayer使用assigned_animation跟踪当前或上次播放的动画。如果使用相同的动画name或没有name参数调用此方法,如果暂停,分配的动画将继续播放。
注意:动画将在下次处理AnimationPlayer时更新。如果其他变量在调用它的同时更新,它们可能更新得太早。要立即执行更新,请调用Advanced(0)。
void play_backwards(name: StringName = &"", custom_blend: float = -1) 🔗
反向播放键name的动画。
此方法是play()的简写,custom_speed=-1.0和from_end=true,因此请参阅其描述以获取更多信息。
void play_section(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗
播放带有键name的动画以及从start_time开始并以end_time结束的部分。另请参阅play()。
将start_time设置为动画范围之外的值意味着将使用动画的开始,将end_time设置为动画范围之外的值意味着将使用动画的结束。start_time不能等于end_time。
void play_section_backwards(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1) 🔗
以键name和从start_time开始并以end_time结束的部分反向播放动画。
此方法是play_section()的简写,custom_speed=-1.0和from_end=true,有关详细信息,请参阅其描述。
void play_section_with_markers(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗
播放带有键name和从start_marker开始并以end_marker结束的部分的动画。
如果开始标记为空,则该部分从动画的开头开始。如果结束标记为空,则该部分在动画结束时结束。另见play()。
void play_section_with_markers_backwards(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1) 🔗
以键name和从start_marker开始并以end_marker结束的部分反向播放动画。
此方法是play_section_with_markers()的简写,custom_speed=-1.0和from_end=true,有关详细信息,请参阅其描述。
void play_with_capture(name: StringName = &"", duration: float = -1.0, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false, trans_type: TransitionType = 0, ease_type: EaseType = 0) 🔗
您可以使用此方法使用比playback_auto_capture执行的更详细的捕获选项。当playback_auto_capture为false时,此方法与以下方法几乎相同:
capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)
如果name为空,则指定assigned_animation。
如果duration为负值,则持续时间设置为当前位置和第一个关键帧之间的间隔,当from_end为true时,则使用当前位置和最后一个关键帧之间的间隔。
注意: duration考虑了speed_scale,但custom_speed不考虑,因为捕获缓存与混合结果相结合,混合结果可能包含多个动画。
void queue(name: StringName) 🔗
完成当前动画和所有先前排队的动画后,将动画排队以供播放。
注意:如果当前正在播放循环动画,则排队的动画将永远不会播放,除非循环动画以某种方式停止。
void reset_section() 🔗
如果设置了节,则重置当前节。
void seek(seconds: float, update: bool = false, update_only: bool = false) 🔗
查找动画到seconds时间点(以秒为单位)。如果update为true,动画也会更新,否则会在处理时更新。跳过当前帧和seconds之间的事件。
如果update_only为true,则不会处理方法/音频/动画播放轨道。
注意:寻找动画结束不会发出AnimationMixer.animation_finished。如果要跳过动画并发出信号,请使用AnimationMixer.advance()。
void set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) 🔗
指定两个动画之间的混合时间(以秒为单位),由它们的键引用。
void set_method_call_mode(mode: AnimationMethodCallMode) 🔗
已弃用: 请改用 AnimationMixer.callback_mode_method。
设置用于“调用方法”轨道的调用模式。
void set_process_callback(mode: AnimationProcessCallback) 🔗
已弃用: 请改用 AnimationMixer.callback_mode_process。
设置要在其中更新动画的进程通知。
void set_root(path: ItemPath) 🔗
已弃用: 使用 AnimationMixer.root_node 代替。
设置节点路径引用将从哪个节点旅行。
void set_section(start_time: float = -1, end_time: float = -1) 🔗
更改正在播放的部分的开始和结束时间。当前播放位置将被限制在新部分中。另请参见play_section()。
void set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"") 🔗
更改正在播放的部分的开始和结束标记。当前播放位置将被限制在新部分中。另请参见play_section_with_markers()。
如果参数为空,则该部分使用动画的开头或结尾。如果两者都为空,则表示该部分未设置。
void stop(keep_state: bool = false) 🔗
停止当前正在播放的动画。动画位置重置为0,custom_speed重置为1.0。另请参阅pause()。
如果keep_state为true,则动画状态不会在视觉上更新。
注意:方法/音频/动画播放曲目不会被此方法处理。