Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Sprite2D
继承: Node2D < CanvasItem < Node < Object
通用精灵节点。
描述
显示 2D 纹理的节点。显示的纹理可以是较大图集纹理中的某个区域,也可以是精灵表动画中的某一帧。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法
get_rect() const |
|
is_pixel_opaque(pos: Vector2) const |
信号
frame_changed() 🔗
当 frame 更改时发出。
texture_changed() 🔗
当 texture 更改时发出。
属性说明
如果为 true
,则会将纹理居中。
注意:像素风游戏中,纹理在居中后可能会变形。这是因为此时纹理的位置在两个像素之间。要避免这种情况,请将该属性设为 false
,或者考虑启用 ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel 和 ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel。
如果为 true
,纹理将被水平翻转。
如果为 true
,纹理将被垂直翻转。
当前显示的精灵表中的帧。hframes 和 vframes 必须大于 1。hframes 或 vframes 发生变化时会自动调整该属性,让它在视觉上保持指向同一帧(同一行、同一列)。 如果无法保持,则会重置为 0
。
Vector2i frame_coords = Vector2i(0, 0)
🔗
显示的帧在精灵表中的坐标。这是 frame 属性的别名。vframes 或 hframes 必须大于 1。
精灵表中的列数。该属性发生变化时会对 frame 进行调整,在视觉上维持相同的帧(同一行、同一列)。如果无法维持,则会将 frame 重置为 0
。
Vector2 offset = Vector2(0, 0)
🔗
纹理的绘图偏移量。
如果为 true
,则从较大的图集纹理中剪切纹理。见 region_rect。
bool region_filter_clip_enabled = false
🔗
如果为 true
,则会裁剪 region_rect 之外的区域,避免周围纹理像素的出血现象。region_enabled 必须为 true
。
Rect2 region_rect = Rect2(0, 0, 0, 0)
🔗
要显示的图集纹理区域。region_enabled 必须是 true
。
要绘制的 Texture2D 对象。
精灵表中的行数。该属性发生变化时会对 frame 进行调整,在视觉上维持相同的帧(同一行、同一列)。如果无法维持,则会将 frame 重置为 0
。
方法说明
返回代表该 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("我点!")
public override void _Input(InputEvent @event)
{
if (@event is InputEventMouseButton inputEventMouse)
{
if (inputEventMouse.Pressed && inputEventMouse.ButtonIndex == MouseButton.Left)
{
if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))
{
GD.Print("我点!");
}
}
}
}
bool is_pixel_opaque(pos: Vector2) const 🔗
如果给定位置的像素不透明,则返回 true
,其他情况下返回 false
。该位置采用局部坐标。
注意:如果精灵的纹理为 null
或者给定的位置无效,它也会返回 false
。