Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Sprite2D

继承: Node2D < CanvasItem < Node < Object

通用精灵节点。

描述

显示 2D 纹理的节点。显示的纹理可以是较大图集纹理中的某个区域,也可以是精灵表动画中的某一帧。

教程

属性

bool

centered

true

bool

flip_h

false

bool

flip_v

false

int

frame

0

Vector2i

frame_coords

Vector2i(0, 0)

int

hframes

1

Vector2

offset

Vector2(0, 0)

bool

region_enabled

false

bool

region_filter_clip_enabled

false

Rect2

region_rect

Rect2(0, 0, 0, 0)

Texture2D

texture

int

vframes

1

方法

Rect2

get_rect ( ) const

bool

is_pixel_opaque ( Vector2 pos ) const


信号

frame_changed ( )

frame 更改时发出。


texture_changed ( )

texture 更改时发出。


属性说明

bool centered = true

  • void set_centered ( bool value )

  • bool is_centered ( )

如果为 true,纹理居中。


bool flip_h = false

  • void set_flip_h ( bool value )

  • bool is_flipped_h ( )

如果为 true,纹理将被水平翻转。


bool flip_v = false

  • void set_flip_v ( bool value )

  • bool is_flipped_v ( )

如果为 true,纹理将被垂直翻转。


int frame = 0

  • void set_frame ( int value )

  • int get_frame ( )

当前显示的精灵表中的帧。hframesvframes 必须大于 1。hframesvframes 发生变化时会自动调整该属性,让它在视觉上保持指向同一帧(同一行、同一列)。 如果无法保持,则会重置为 0


Vector2i frame_coords = Vector2i(0, 0)

显示的帧在精灵表中的坐标。这是 frame 属性的别名。vframeshframes 必须大于 1。


int hframes = 1

  • void set_hframes ( int value )

  • int get_hframes ( )

精灵表中的列数。该属性发生变化时会对 frame 进行调整,在视觉上维持相同的帧(同一行、同一列)。如果无法维持,则会将 frame 重置为 0


Vector2 offset = Vector2(0, 0)

纹理的绘图偏移量。


bool region_enabled = false

  • void set_region_enabled ( bool value )

  • bool is_region_enabled ( )

如果为 true,则从较大的图集纹理中剪切纹理。见 region_rect


bool region_filter_clip_enabled = false

  • void set_region_filter_clip_enabled ( bool value )

  • bool is_region_filter_clip_enabled ( )

如果为 true,则最外侧的像素会变得模糊。region_enabled 必须为 true


Rect2 region_rect = Rect2(0, 0, 0, 0)

  • void set_region_rect ( Rect2 value )

  • Rect2 get_region_rect ( )

要显示的图集纹理区域。region_enabled 必须是 true


Texture2D texture

要绘制的 Texture2D 对象。


int vframes = 1

  • void set_vframes ( int value )

  • int get_vframes ( )

精灵表中的行数。该属性发生变化时会对 frame 进行调整,在视觉上维持相同的帧(同一行、同一列)。如果无法维持,则会将 frame 重置为 0


方法说明

Rect2 get_rect ( ) const

返回代表该 Sprite2D 边界的 Rect2,使用局部坐标。可用于检测该 Sprite2D 是否被点击。

示例:

func _input(event):
    if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
        if get_rect().has_point(to_local(event.position)):
            print("我点!")

bool is_pixel_opaque ( Vector2 pos ) const

如果给定位置的像素不透明,则返回 true,其他情况下返回 false

注意:如果精灵的纹理为 null 或者给定的位置无效,它也会返回 false