AnimationPlayer

继承: AnimationMixer < Item < Object

用于动画播放的节点。

描述

动画播放器用于动画的通用播放。它包含AnimationLibrary资源字典和动画过渡之间的自定义混合时间。

一些方法和属性使用单个键直接引用动画。这些键被格式化为库的键,然后是正斜杠,然后是库中动画的键,例如“移动/运行”。如果库的键是空字符串(称为默认库),则省略正斜杠,因为它与库使用的键相同。

对于更复杂的动画,例如具有非平凡时间的动画,AnimationPlayerTween更适合。如果动画轨道编辑器比在代码中执行更方便,它也可以在Tween上使用。

更新动画的目标属性发生在流程帧中。

属性

方法

StringName

animation_get_next(animation_from: StringName) const

void

animation_set_next(animation_from: StringName, animation_to: StringName)

void

clear_queue()

float

get_blend_time(animation_from: StringName, animation_to: StringName) const

AnimationMethodCallMode

get_method_call_mode() const

float

get_playing_speed() const

AnimationProcessCallback

get_process_callback() const

PackedStringArray

get_queue()

ItemPath

get_root() const

float

get_section_end_time() const

float

get_section_start_time() const

bool

has_section() const

bool

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

reset_section()

void

seek(seconds: float, update: bool = false, update_only: bool = false)

void

set_blend_time(animation_from: StringName, animation_to: StringName, sec: float)

void

set_method_call_mode(mode: AnimationMethodCallMode)

void

set_process_callback(mode: AnimationProcessCallback)

void

set_root(path: ItemPath)

void

set_section(start_time: float = -1, end_time: float = -1)

void

set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"")

void

stop(keep_state: bool = false)


信号

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


属性说明

String assigned_animation 🔗

  • void set_assigned_animation(value: String)

  • String get_assigned_animation()

如果正在播放,则为当前动画的键,否则为上次播放的动画。设置后,会更改动画,但除非已经播放,否则不会播放。另请参见current_animation


String autoplay = "" 🔗

场景加载时播放的动画键。


String current_animation = "" 🔗

  • void set_current_animation(value: String)

  • String get_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 🔗

  • void set_movie_quit_on_finish_enabled(value: bool)

  • bool is_movie_quit_on_finish_enabled()

如果true并且引擎在Movie Maker模式下运行(参见MovieWriter),则在此AnimationPlayer中播放完动画后立即使用SceneTree.quit()。因此,当引擎退出时会打印一条消息。

注意:这遵循与AnimationMixer.animation_finished信号相同的逻辑,因此如果动画设置为循环,它不会退出引擎。


bool playback_auto_capture = true 🔗

  • void set_auto_capture(value: bool)

  • bool is_auto_capture()

如果true,则在自动播放之前执行AnimationMixer.capture()。这意味着仅使用默认参数执行play_with_capture()而不是play()

注意:仅当动画包含捕获轨道时才执行捕获插值。另见Animation.UPDATE_CAPTURE


float playback_auto_capture_duration = -1.0 🔗

  • void set_auto_capture_duration(value: float)

  • float get_auto_capture_duration()

另请参见play_with_capture()AnimationMixer.capture()

如果playback_auto_capture_duration为负值,则持续时间设置为当前位置和第一个键之间的间隔。


EaseType playback_auto_capture_ease_type = 0 🔗

  • void set_auto_capture_ease_type(value: EaseType)

  • EaseType get_auto_capture_ease_type()

捕获插值的简易类型。另请参阅EaseType


TransitionType playback_auto_capture_transition_type = 0 🔗

捕获插值的转换类型。另请参阅TransitionType


float playback_default_blend_time = 0.0 🔗

  • void set_default_blend_time(value: float)

  • float get_default_blend_time()

混合动画的默认时间。范围从0到4096,精度为0.01。


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

速度缩放比。例如,如果此值为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() 🔗

返回当前排队播放的动画键列表。


ItemPath get_root() const 🔗

已弃用: 使用 AnimationMixer.root_node 代替。

返回节点路径引用将从其旅行的节点。


float get_section_end_time() const 🔗

返回当前正在播放的部分的结束时间。


float get_section_start_time() const 🔗

返回当前正在播放的部分的开始时间。


bool has_section() const 🔗

如果动画当前正在播放部分,则返回true


bool is_playing() const 🔗

返回true如果动画当前正在播放(即使speed_scale和/或custom_speed0)。


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_endtrue,动画将向后播放(相当于调用play_backwards())。

AnimationPlayer使用assigned_animation跟踪当前或上次播放的动画。如果使用相同的动画name或没有name参数调用此方法,如果暂停,分配的动画将继续播放。

注意:动画将在下次处理AnimationPlayer时更新。如果其他变量在调用它的同时更新,它们可能更新得太早。要立即执行更新,请调用Advanced(0)


void play_backwards(name: StringName = &"", custom_blend: float = -1) 🔗

反向播放键name的动画。

此方法是play()的简写,custom_speed=-1.0from_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.0from_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.0from_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) 🔗

另请参阅AnimationMixer.capture()

您可以使用此方法使用比playback_auto_capture执行的更详细的捕获选项。当playback_auto_capturefalse时,此方法与以下方法几乎相同:

capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)

如果name为空,则指定assigned_animation

如果duration为负值,则持续时间设置为当前位置和第一个关键帧之间的间隔,当from_endtrue时,则使用当前位置和最后一个关键帧之间的间隔。

注意: duration考虑了speed_scale,但custom_speed不考虑,因为捕获缓存与混合结果相结合,混合结果可能包含多个动画。


void queue(name: StringName) 🔗

完成当前动画和所有先前排队的动画后,将动画排队以供播放。

注意:如果当前正在播放循环动画,则排队的动画将永远不会播放,除非循环动画以某种方式停止。


void reset_section() 🔗

如果设置了节,则重置当前节。


void seek(seconds: float, update: bool = false, update_only: bool = false) 🔗

查找动画到seconds时间点(以秒为单位)。如果updatetrue,动画也会更新,否则会在处理时更新。跳过当前帧和seconds之间的事件。

如果update_onlytrue,则不会处理方法/音频/动画播放轨道。

注意:寻找动画结束不会发出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) 🔗

停止当前正在播放的动画。动画位置重置为0custom_speed重置为1.0。另请参阅pause()

如果keep_statetrue,则动画状态不会在视觉上更新。

注意:方法/音频/动画播放曲目不会被此方法处理。