Animation

Inherits: Resource < Reference < Object

包含用于对引擎中所有内容进行动画处理的数据。

描述

Animation 资源包含对引擎中的内容进行动画所需的数据。动画被划分为轨道,每个轨道必须与一个节点相连。通过向轨道添加时间键(事件),节点的状态可以随时间改变。

  1. # 这将创建一个动画,使节点“Enemy”向右移动
  2. # 在 0.5 秒内移动 100 像素。
  3. var animation = Animation.new()
  4. var track_index = animation.add_track(Animation.TYPE_VALUE)
  5. animation.track_set_path(track_index, "Enemy:position:x")
  6. animation.track_insert_key(track_index, 0.0, 0)
  7. animation.track_insert_key(track_index, 0.5, 100)

动画只是数据容器,必须添加到 AnimationPlayerAnimationTreePlayer 等节点上才能播放。动画轨道有不同的类型,每个都有自己的一套专用方法。参阅 TrackType 查看可用类型。

教程

属性

float

length

1.0

bool

loop

false

float

step

0.1

方法

int

add_track ( TrackType type, int at_position=-1 )

String

animation_track_get_key_animation ( int track_idx, int key_idx ) const

int

animation_track_insert_key ( int track_idx, float time, String animation )

void

animation_track_set_key_animation ( int track_idx, int key_idx, String animation )

float

audio_track_get_key_end_offset ( int track_idx, int key_idx ) const

float

audio_track_get_key_start_offset ( int track_idx, int key_idx ) const

Resource

audio_track_get_key_stream ( int track_idx, int key_idx ) const

int

audio_track_insert_key ( int track_idx, float time, Resource stream, float start_offset=0, float end_offset=0 )

void

audio_track_set_key_end_offset ( int track_idx, int key_idx, float offset )

void

audio_track_set_key_start_offset ( int track_idx, int key_idx, float offset )

void

audio_track_set_key_stream ( int track_idx, int key_idx, Resource stream )

Vector2

bezier_track_get_key_in_handle ( int track_idx, int key_idx ) const

Vector2

bezier_track_get_key_out_handle ( int track_idx, int key_idx ) const

float

bezier_track_get_key_value ( int track_idx, int key_idx ) const

int

bezier_track_insert_key ( int track_idx, float time, float value, Vector2 in_handle=Vector2( 0, 0 ), Vector2 out_handle=Vector2( 0, 0 ) )

float

bezier_track_interpolate ( int track_idx, float time ) const

void

bezier_track_set_key_in_handle ( int track_idx, int key_idx, Vector2 in_handle )

void

bezier_track_set_key_out_handle ( int track_idx, int key_idx, Vector2 out_handle )

void

bezier_track_set_key_value ( int track_idx, int key_idx, float value )

void

clear ( )

void

copy_track ( int track_idx, Animation to_animation )

int

find_track ( NodePath path ) const

int

get_track_count ( ) const

PoolIntArray

method_track_get_key_indices ( int track_idx, float time_sec, float delta ) const

String

method_track_get_name ( int track_idx, int key_idx ) const

Array

method_track_get_params ( int track_idx, int key_idx ) const

void

remove_track ( int track_idx )

int

track_find_key ( int track_idx, float time, bool exact=false ) const

bool

track_get_interpolation_loop_wrap ( int track_idx ) const

InterpolationType

track_get_interpolation_type ( int track_idx ) const

int

track_get_key_count ( int track_idx ) const

float

track_get_key_time ( int track_idx, int key_idx ) const

float

track_get_key_transition ( int track_idx, int key_idx ) const

Variant

track_get_key_value ( int track_idx, int key_idx ) const

NodePath

track_get_path ( int track_idx ) const

TrackType

track_get_type ( int track_idx ) const

void

track_insert_key ( int track_idx, float time, Variant key, float transition=1 )

bool

track_is_enabled ( int track_idx ) const

bool

track_is_imported ( int track_idx ) const

void

track_move_down ( int track_idx )

void

track_move_to ( int track_idx, int to_idx )

void

track_move_up ( int track_idx )

void

track_remove_key ( int track_idx, int key_idx )

void

track_remove_key_at_position ( int track_idx, float position )

void

track_set_enabled ( int track_idx, bool enabled )

void

track_set_imported ( int track_idx, bool imported )

void

track_set_interpolation_loop_wrap ( int track_idx, bool interpolation )

void

track_set_interpolation_type ( int track_idx, InterpolationType interpolation )

void

track_set_key_time ( int track_idx, int key_idx, float time )

void

track_set_key_transition ( int track_idx, int key_idx, float transition )

void

track_set_key_value ( int track_idx, int key, Variant value )

void

track_set_path ( int track_idx, NodePath path )

void

track_swap ( int track_idx, int with_idx )

int

transform_track_insert_key ( int track_idx, float time, Vector3 location, Quat rotation, Vector3 scale )

Array

transform_track_interpolate ( int track_idx, float time_sec ) const

PoolIntArray

value_track_get_key_indices ( int track_idx, float time_sec, float delta ) const

UpdateMode

value_track_get_update_mode ( int track_idx ) const

Variant

value_track_interpolate ( int track_idx, float time_sec ) const

void

value_track_set_update_mode ( int track_idx, UpdateMode mode )

信号

  • tracks_changed ( )

当轨道列表发生变化时发出,例如轨道被添加、移动或改变路径。

枚举

enum TrackType:

  • TYPE_VALUE = 0 —- 值跟踪节点属性中的设置值,但只跟踪那些可以插值的值。

  • TYPE_TRANSFORM = 1 —- 变换轨迹用于改变节点局部变换或骨架姿势骨架。转变是插值的。

  • TYPE_METHOD = 2 —- 方法跟踪每个键给定参数的调用函数。

  • TYPE_BEZIER = 3 —- Bezier轨迹用于使用自定义曲线对数值进行插值。它们也可以用来对向量和颜色的子属性进行动画处理(例如Color的alpha值)。

  • TYPE_AUDIO = 4 —- 音频轨道可以用来通过任意类型的 AudioStreamPlayer 播放音频流。该流可以在动画中进行修剪和预览。

  • TYPE_ANIMATION = 5 —- 动画曲目在其他 AnimationPlayer 节点中播放动画。


enum InterpolationType:

  • INTERPOLATION_NEAREST = 0 —- 无内插(最近值)。

  • INTERPOLATION_LINEAR = 1 —- 线性插值.

  • INTERPOLATION_CUBIC = 2 —- 三次插值.


enum UpdateMode:

  • UPDATE_CONTINUOUS = 0 —- 在关键帧之间更新。

  • UPDATE_DISCRETE = 1 —- 在关键帧更新并保持数值。

  • UPDATE_TRIGGER = 2 —- 在关键帧更新。

  • UPDATE_CAPTURE = 3 —- 与线性插值相同,但如果第一个键不是在0秒时,也会从当前值进行插值(即在运行时动态插值)。

属性说明

Default

1.0

Setter

set_length(value)

Getter

get_length()

动画的总长度(单位:秒)。

注意:长度不以最后一个键为界,因为这个键可能在结束前或结束后,以确保正确的插值和循环。


Default

false

Setter

set_loop(value)

Getter

has_loop()

指示动画必须循环的标志。这用于动画循环正确插值,以及提示播放器须重新启动动画。


Default

0.1

Setter

set_step(value)

Getter

get_step()

动画步长值。

方法说明

向动画添加轨道。


  • String animation_track_get_key_animation ( int track_idx, int key_idx ) const

返回由 key_idx标识的键处的动画名称。 track_idx必须是动画轨道的索引。


在给定的time(以秒为单位)中插入值animation的键。 track_idx必须是动画轨道的索引。


  • void animation_track_set_key_animation ( int track_idx, int key_idx, String animation )

key_idx 所标识的键设置为 animation 的值。track_idx 必须是动画轨道的索引。


  • float audio_track_get_key_end_offset ( int track_idx, int key_idx ) const

返回由 key_idx 标识的键的结束偏移量。track_idx 必须是音频轨道的索引。

结束偏移是音频流末尾截断的秒数。


  • float audio_track_get_key_start_offset ( int track_idx, int key_idx ) const

返回由 key_idx 标识的键的起始偏移量。track_idx 必须是音频轨道的索引。

起始偏移量是音频流开头截断的秒数。


  • Resource audio_track_get_key_stream ( int track_idx, int key_idx ) const

返回由 key_idx 标识的键的音频流。track_idx 必须是音频轨道的索引。


time 秒处插入音频轨道关键帧。track_idx 必须是音频轨道的索引。

stream 是要播放的 AudioStream 资源。start_offset 是在音频流的开头截断的秒数,而 end_offset 则是在结尾的截断。


  • void audio_track_set_key_end_offset ( int track_idx, int key_idx, float offset )

将由 key_idx 标识的关键帧的结束偏移设置为值 offset。参数 track_idx 必须是音频轨道的索引。


  • void audio_track_set_key_start_offset ( int track_idx, int key_idx, float offset )

将由 key_idx 确定的关键帧的起始偏移量设置为 offset。参数 track_idx 必须是音频轨道的索引。


  • void audio_track_set_key_stream ( int track_idx, int key_idx, Resource stream )

key_idx 所标识的键流设置为stream值。track_idx必须是一个音频轨道的索引。


  • Vector2 bezier_track_get_key_in_handle ( int track_idx, int key_idx ) const

返回由 key_idx 识别的键的输入句柄, track_idx 必须是 Bezier轨道的索引。


  • Vector2 bezier_track_get_key_out_handle ( int track_idx, int key_idx ) const

返回由 key_idx 识别的键的输出句柄, track_idx 必须是 Bezier轨道的索引。


  • float bezier_track_get_key_value ( int track_idx, int key_idx ) const

返回由 key_idx 识别的键的值, track_idx 必须是 Bezier轨道的索引。


在给定的时间插入一个贝塞尔轨道键,单位为秒。track_idx 必须是 Bezier轨道的索引。

in_handle是添加的Bezier曲线点的左侧权重,out_handle是右侧权重,而value是这个点的实际值。


  • float bezier_track_interpolate ( int track_idx, float time ) const

返回给定 time处的插值(以秒为单位)。 track_idx必须是 Bezier轨道的索引。


  • void bezier_track_set_key_in_handle ( int track_idx, int key_idx, Vector2 in_handle )

key_idx 所标识的键的 in handle 设置为 in_handle 值。track_idx 必须是 Bezier轨道的索引。


  • void bezier_track_set_key_out_handle ( int track_idx, int key_idx, Vector2 out_handle )

将由 key_idx 确定的关键帧的输出柄设置为 out_handle 。参数 track_idx 必须是贝塞尔曲线轨道的索引。


  • void bezier_track_set_key_value ( int track_idx, int key_idx, float value )

key_idx 所标识的键值设置为给定值。track_idx必须是 Bezier轨道的索引。


  • void clear ( )

清除动画(清除所有轨道并重置所有)。


to_animation中添加一个新的轨道,它是给定轨道的副本。


返回指定轨迹的索引。如果没有找到,返回-1。


  • int get_track_count ( ) const

返回动画中的曲目量。


返回给定位置和delta时间的方法轨迹的所有关键指数。


  • String method_track_get_name ( int track_idx, int key_idx ) const

返回一个方法轨迹的方法名。


  • Array method_track_get_params ( int track_idx, int key_idx ) const

返回给定轨道中给定键的方法轨道上要调用的参数值。


  • void remove_track ( int track_idx )

通过指定轨迹索引来删除一个轨迹。


按时间查找给定轨迹中的关键索引。也可选择只在给定准确时间的情况下查找。


  • bool track_get_interpolation_loop_wrap ( int track_idx ) const

如果 idx 处的轨迹包住了内插循环,则返回 true。新的轨迹默认会包住内插循环。


返回给定轨迹的插值类型。


  • int track_get_key_count ( int track_idx ) const

返回指定轨道中的键数。


  • float track_get_key_time ( int track_idx, int key_idx ) const

返回钥匙所在的时间。


  • float track_get_key_transition ( int track_idx, int key_idx ) const

返回特定键的过渡曲线(缓动)(参阅内置数学函数@GDScript.ease)。


  • Variant track_get_key_value ( int track_idx, int key_idx ) const

返回给定轨道中给定键的值。


获取轨迹的路径。有关路径格式的详细信息,请参阅track_set_path


获取轨道的类型。


在指定的轨道中插入一个通用键。


  • bool track_is_enabled ( int track_idx ) const

如果启用了索引idx处的轨迹,则返回true


  • bool track_is_imported ( int track_idx ) const

如果给定的轨迹被导入,返回true。否则,返回false


  • void track_move_down ( int track_idx )

将轨道下移。


  • void track_move_to ( int track_idx, int to_idx )

将轨道 idx 的索引位置改为 to_idx 中定义的位置。


  • void track_move_up ( int track_idx )

将轨道上移。


  • void track_remove_key ( int track_idx, int key_idx )

在指定的轨道上按索引删除一个键。


  • void track_remove_key_at_position ( int track_idx, float position )

按位置(秒)删除指定轨道中的键。


  • void track_set_enabled ( int track_idx, bool enabled )

启用/禁用指定的轨道。曲目默认为启用。


  • void track_set_imported ( int track_idx, bool imported )

将指定的轨道设置为导入或不导入。


  • void track_set_interpolation_loop_wrap ( int track_idx, bool interpolation )

如果true,则idx处的轨迹包住插值循环。


设置指定轨道的内插类型。


  • void track_set_key_time ( int track_idx, int key_idx, float time )

设置现有键的时间。


  • void track_set_key_transition ( int track_idx, int key_idx, float transition )

设置特定键的过渡曲线(缓动)(参阅内置数学函数@GDScript.ease)。


  • void track_set_key_value ( int track_idx, int key, Variant value )

设置现有键的值。


设置轨道的路径。路径必须是指向节点场景树的有效路径,必须从将要实现动画的节点的父节点开始指定。控件属性或骨骼的轨道必须在路径后面加上它们的名字,用":"分隔。

例如,"character/skeleton:ankle""character/mesh:transform/local"


  • void track_swap ( int track_idx, int with_idx )

将轨道 idx 的索引位置与轨道 with_idx 的索引位置互换。


为变换轨道插入变换键。


  • Array transform_track_interpolate ( int track_idx, float time_sec ) const

返回给定时间内变换轨迹的插值(以秒为单位)。由3个元素组成的数组:position(位置)(Vector3)、rotation(旋转)(Quat)、 scale(缩放)(Vector3)。


返回给定位置和delta时间的价值轨迹的所有关键指数。


返回值跟踪的更新模式。


返回给定时间处(以秒为单位)的插值。track_idx必须是一个值轨道的索引。


  • void value_track_set_update_mode ( int track_idx, UpdateMode mode )

设置值跟踪的更新模式(参阅UpdateMode)。