AniSprite

继承: SpriteBase < GeometryRender < VisualRender < Item3D < Item < Object

3D世界中的2D精灵节点,可以使用多个2D纹理进行动画。

描述

AniSprite类似于Sprite节点,只是它携带多个纹理作为动画sprite_frames。动画是使用SpriteFrames资源创建的,该资源允许您导入图像文件(或包含所述文件的文件夹)以提供精灵的动画帧。SpriteFrames资源可以通过SpriteFrames底部面板在编辑器中配置。

属性

方法

float

get_playing_speed() const

bool

is_playing() const

void

pause()

void

play(name: StringName = &"", custom_speed: float = 1.0, from_end: bool = false)

void

play_backwards(name: StringName = &"")

void

set_frame_and_progress(frame: int, progress: float)

void

stop()


信号

animation_changed() 🔗

animation更改时发出。


animation_finished() 🔗

在动画结束时发出,如果反向播放,则在开始时发出。当动画完成时,它会暂停播放。

注意:如果动画循环,则不会发出此信号。


animation_looped() 🔗

动画循环时发出。


frame_changed() 🔗

frame改变时发出。


sprite_frames_changed() 🔗

sprite_frames改变时发出。


属性说明

StringName animation = &"default" 🔗

sprite_frames资源中的当前动画。如果更改此值,则重置frame计数器和frame_progress


String autoplay = "" 🔗

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


int frame = 0 🔗

  • void set_frame(value: int)

  • int get_frame()

显示的动画帧的索引。设置此属性也会重置frame_progress。如果不需要,请使用set_frame_and_progress()


float frame_progress = 0.0 🔗

  • void set_frame_progress(value: float)

  • float get_frame_progress()

0.01.0之间的进度值,直到当前帧转换到下一帧。如果动画向后播放,则该值从1.0转换到0.0


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

速度缩放比。例如,如果此值为1,则动画以正常速度播放。如果是0.5,则以一半速度播放。如果是2,则以双倍速度播放。

如果设置为负值,则反向播放动画。如果设置为0,则动画不会前进。


SpriteFrames sprite_frames 🔗

  • void set_sprite_frames(value: SpriteFrames)

  • SpriteFrames get_sprite_frames()

包含动画的SpriteFrames资源。允许您选择加载、编辑、清除、设为唯一和保存SpriteFrames资源的状态。


方法说明

float get_playing_speed() const 🔗

返回当前动画的实际播放速度,如果不播放,则返回0。此速度是调用play()方法时指定的speed_scale属性乘以custom_speed参数。

如果当前动画向后播放,则返回负值。


bool is_playing() const 🔗

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


void pause() 🔗

暂停当前播放的动画。frameframe_progress将被保留,调用play()或不带参数的play_backwards()将从当前播放位置恢复动画。

另请参见stop()


void play(name: StringName = &"", custom_speed: float = 1.0, from_end: bool = false) 🔗

使用键name播放动画。如果custom_speed为负数,from_endtrue,动画将向后播放(相当于调用play_backwards())。

如果使用相同的动画name或没有name参数调用此方法,则分配的动画将在暂停时继续播放。


void play_backwards(name: StringName = &"") 🔗

反向播放键name的动画。

此方法是play()的简写,custom_speed=-1.0from_end=true,因此请参阅其描述以获取更多信息。


void set_frame_and_progress(frame: int, progress: float) 🔗

frameframe_progress设置为给定的值。与设置frame不同的是,该方法不会将frame_progress隐式重置为0.0

示例:在保持相同的frameframe_progress的同时,更改动画:

var current_frame = animated_sprite.get_frame()
var current_progress = animated_sprite.get_frame_progress()
animated_sprite.play("walk_another_skin")
animated_sprite.set_frame_and_progress(current_frame, current_progress)

void stop() 🔗

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