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。