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(pos: Vector2) const


Сигналы

frame_changed() 🔗

Выдается при изменении frame.


texture_changed() 🔗

Выдается при изменении texture.


Описания свойств

bool centered = true 🔗

  • void set_centered(value: bool)

  • bool is_centered()

Если true, текстура центрирована.

Примечание: В играх с пиксельной эстетикой текстуры могут выглядеть деформированными при центрировании. Это вызвано их положением между пикселями. Чтобы предотвратить это, установите это свойство на false или рассмотрите возможность включения ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel и ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel.


bool flip_h = false 🔗

  • void set_flip_h(value: bool)

  • bool is_flipped_h()

Если true, текстура отражена по горизонтали.


bool flip_v = false 🔗

  • void set_flip_v(value: bool)

  • bool is_flipped_v()

Если true, текстура отражена по вертикали.


int frame = 0 🔗

  • void set_frame(value: int)

  • int get_frame()

Текущий кадр для отображения из таблицы спрайтов. hframes или vframes должны быть больше 1. Это свойство автоматически корректируется, когда hframes или vframes изменяются, чтобы продолжать указывать на тот же визуальный кадр (тот же столбец и строку). Если это невозможно, это значение сбрасывается до 0.


Vector2i frame_coords = Vector2i(0, 0) 🔗

Координаты кадра для отображения из таблицы спрайтов. Это псевдоним для свойства frame. hframes или vframes должны быть больше 1.


int hframes = 1 🔗

  • void set_hframes(value: int)

  • int get_hframes()

Количество столбцов в таблице спрайтов. При изменении этого свойства frame корректируется так, чтобы сохранялась та же визуальная рамка (та же строка и столбец). Если это невозможно, frame сбрасывается до 0.


Vector2 offset = Vector2(0, 0) 🔗

Смещение отрисовки текстуры.

Примечание: При увеличении offset.y в Sprite2D спрайт перемещается вниз на экране (т. е. +Y — вниз).


bool region_enabled = false 🔗

  • void set_region_enabled(value: bool)

  • bool is_region_enabled()

Если true, текстура вырезается из более крупной текстуры атласа. См. region_rect.

Примечание: При использовании пользовательского Shader в Sprite2D встроенный шейдер UV будет ссылаться на всё пространство текстуры. Вместо этого используйте встроенный шейдер REGION_RECT для получения текущей видимой области, заданной в region_rect. Подробнее см. Шейдеры CanvasItem.


bool region_filter_clip_enabled = false 🔗

  • void set_region_filter_clip_enabled(value: bool)

  • bool is_region_filter_clip_enabled()

Если true, область за пределами region_rect обрезается, чтобы избежать просачивания окружающих пикселей текстуры. region_enabled должно быть true.


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

  • void set_region_rect(value: Rect2)

  • Rect2 get_region_rect()

Область текстуры атласа для отображения. region_enabled должен быть true.


Texture2D texture 🔗

Texture2D объект для рисования.


int vframes = 1 🔗

  • void set_vframes(value: int)

  • int get_vframes()

Количество строк в таблице спрайтов. При изменении этого свойства frame корректируется так, чтобы сохранялась та же визуальная рамка (та же строка и столбец). Если это невозможно, frame сбрасывается до 0.


Описания метода

Rect2 get_rect() const 🔗

Возвращает Rect2, представляющий границу Sprite2D в локальных координатах.

Пример: Определить, был ли нажат 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(pos: Vector2) const 🔗

Returns true if the pixel at the given position is opaque, false otherwise. Also returns false if the given position is out of bounds or this sprite's texture is null. pos is in local coordinates.