Sprite

Inherits: Node2D < CanvasItem < Node < Object

通用精灵图节点。

描述

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

教程

属性

bool

centered

true

bool

flip_h

false

bool

flip_v

false

int

frame

0

Vector2

frame_coords

Vector2( 0, 0 )

int

hframes

1

Texture

normal_map

Vector2

offset

Vector2( 0, 0 )

bool

region_enabled

false

bool

region_filter_clip

false

Rect2

region_rect

Rect2( 0, 0, 0, 0 )

Texture

texture

int

vframes

1

方法

Rect2

get_rect ( ) const

bool

is_pixel_opaque ( Vector2 pos ) const

信号

  • frame_changed ( )

frame 更改时发出。


  • texture_changed ( )

texture 更改时发出。

属性说明

Default

true

Setter

set_centered(value)

Getter

is_centered()

如果 true,纹理居中。


Default

false

Setter

set_flip_h(value)

Getter

is_flipped_h()

true 时纹理将被水平翻转。


Default

false

Setter

set_flip_v(value)

Getter

is_flipped_v()

true 时纹理将被垂直翻转。


Default

0

Setter

set_frame(value)

Getter

get_frame()

当前显示的精灵表中的帧。vframeshframes 必须大于 1。


Default

Vector2( 0, 0 )

Setter

set_frame_coords(value)

Getter

get_frame_coords()

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


Default

1

Setter

set_hframes(value)

Getter

get_hframes()

精灵表中的列数。


Setter

set_normal_map(value)

Getter

get_normal_map()

为 Sprite 提供深度的法线贴图。

注意: Godot 期望法线贴图使用 X+、Y- 和 Z+ 坐标系。参阅这个页面比较流行引擎所期望的法线贴图坐标系。


Default

Vector2( 0, 0 )

Setter

set_offset(value)

Getter

get_offset()

纹理的绘图偏移量。


  • bool region_enabled

Default

false

Setter

set_region(value)

Getter

is_region()

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


  • bool region_filter_clip

Default

false

Setter

set_region_filter_clip(value)

Getter

is_region_filter_clip_enabled()

如果 true,最外面的像素会变得模糊。


Default

Rect2( 0, 0, 0, 0 )

Setter

set_region_rect(value)

Getter

get_region_rect()

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


Setter

set_texture(value)

Getter

get_texture()

Texture 要绘制的对象。


Default

1

Setter

set_vframes(value)

Getter

get_vframes()

精灵表中的行数。

方法说明

  • Rect2 get_rect ( ) const

返回 Rect2 表示局部坐标中 Sprite 的边界。可用于检测 Sprite 是否被点击。例子:

  1. func _input(event):
  2. if event is InputEventMouseButton and event.pressed and event.button_index == BUTTON_LEFT:
  3. if get_rect().has_point(to_local(event.position)):
  4. print("点击!")

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

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