TileSetAtlasSource

Hereda: TileSetSource < Resource < RefCounted < Object

Expone una textura atlas 2D como un conjunto de tiles para un recurso TileSet.

Descripción

Un atlas es una cuadrícula de tiles dispuestas en una textura. Cada tile en la cuadrícula debe exponerse utilizando create_tile(). Esos tiles se indexan luego utilizando sus coordenadas en la cuadrícula.

Cada tile también puede tener un tamaño en las coordenadas de la cuadrícula, haciéndolo más o menos celdas en el atlas.

Se pueden crear versiones alternativas de un tile utilizando create_alternative_tile(), que luego se indexan utilizando un ID alternativo. Se accede al tile principal (el que está en la cuadrícula) con un ID alternativo igual a 0.

Cada alternativa de tile tiene un conjunto de propiedades que se definen mediante las capas TileSet del origen. Esas propiedades se almacenan en un objeto TileData al que se puede acceder y modificar utilizando get_tile_data().

Como las propiedades de TileData se almacenan directamente en el recurso TileSetAtlasSource, sus propiedades también se pueden establecer utilizando TileSetAtlasSource.set("<coords_x>:<coords_y>/<alternative_id>/<tile_data_property>").

Propiedades

Vector2i

margins

Vector2i(0, 0)

Vector2i

separation

Vector2i(0, 0)

Texture2D

texture

Vector2i

texture_region_size

Vector2i(16, 16)

bool

use_texture_padding

true

Métodos

void

clear_tiles_outside_texture()

int

create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1)

void

create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1))

Vector2i

get_atlas_grid_size() const

int

get_next_alternative_tile_id(atlas_coords: Vector2i) const

Texture2D

get_runtime_texture() const

Rect2i

get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) const

int

get_tile_animation_columns(atlas_coords: Vector2i) const

float

get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const

int

get_tile_animation_frames_count(atlas_coords: Vector2i) const

TileAnimationMode

get_tile_animation_mode(atlas_coords: Vector2i) const

Vector2i

get_tile_animation_separation(atlas_coords: Vector2i) const

float

get_tile_animation_speed(atlas_coords: Vector2i) const

float

get_tile_animation_total_duration(atlas_coords: Vector2i) const

Vector2i

get_tile_at_coords(atlas_coords: Vector2i) const

TileData

get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const

Vector2i

get_tile_size_in_atlas(atlas_coords: Vector2i) const

Rect2i

get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const

PackedVector2Array

get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i)

bool

has_room_for_tile(atlas_coords: Vector2i, size: Vector2i, animation_columns: int, animation_separation: Vector2i, frames_count: int, ignored_tile: Vector2i = Vector2i(-1, -1)) const

bool

has_tiles_outside_texture() const

void

move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i = Vector2i(-1, -1), new_size: Vector2i = Vector2i(-1, -1))

void

remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int)

void

remove_tile(atlas_coords: Vector2i)

void

set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int)

void

set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int)

void

set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float)

void

set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int)

void

set_tile_animation_mode(atlas_coords: Vector2i, mode: TileAnimationMode)

void

set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i)

void

set_tile_animation_speed(atlas_coords: Vector2i, speed: float)


Enumeraciones

enum TileAnimationMode: 🔗

TileAnimationMode TILE_ANIMATION_MODE_DEFAULT = 0

Las animaciones de los tiles comienzan al mismo tiempo, pareciendo idénticas.

TileAnimationMode TILE_ANIMATION_MODE_RANDOM_START_TIMES = 1

Las animaciones de los tiles comienzan en momentos aleatorios, pareciendo variadas.

TileAnimationMode TILE_ANIMATION_MODE_MAX = 2

Representa el tamaño del enum TileAnimationMode.


Constantes

TRANSFORM_FLIP_H = 4096 🔗

Representa la bandera de volteo horizontal de la celda. Debe usarse directamente con TileMapLayer para voltear los tiles colocados alterando sus IDs alternativos.

var id_alternativo = $TileMapLayer.get_cell_alternative_tile(Vector2i(2, 2))
if not id_alternativo & TileSetAtlasSource.TRANSFORM_FLIP_H:
    # Si el tile aún no está volteado, voltéalo.
    $TileMapLayer.set_cell(Vector2i(2, 2), source_id, atlas_coords, id_alternativo | TileSetAtlasSource.TRANSFORM_FLIP_H)

Nota: Estas transformaciones pueden combinarse para hacer el equivalente a rotaciones de 0, 90, 180 y 270 grados, como se muestra a continuación:

enum TileTransform {
    ROTATE_0 = 0,
    ROTATE_90 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_H,
    ROTATE_180 = TileSetAtlasSource.TRANSFORM_FLIP_H | TileSetAtlasSource.TRANSFORM_FLIP_V,
    ROTATE_270 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_V,
}

TRANSFORM_FLIP_V = 8192 🔗

Representa la bandera de volteo vertical de la celda. Véase TRANSFORM_FLIP_H para su uso.

TRANSFORM_TRANSPOSE = 16384 🔗

Representa la bandera de transposición de la celda. Véase TRANSFORM_FLIP_H para su uso.


Descripciones de Propiedades

Vector2i margins = Vector2i(0, 0) 🔗

Márgenes, en píxeles, para desplazar el origen de la cuadrícula en la textura.


Vector2i separation = Vector2i(0, 0) 🔗

El espacio, en píxeles, es el espacio entre mosaicos en el área de textura de la cuadrícula.


Texture2D texture 🔗

La textura del atlas.


Vector2i texture_region_size = Vector2i(16, 16) 🔗

  • void set_texture_region_size(value: Vector2i)

  • Vector2i get_texture_region_size()

El tamaño base del tile en la textura (en píxeles). Este tamaño debe ser mayor o igual que el valor tile_size del TileSet.


bool use_texture_padding = true 🔗

  • void set_use_texture_padding(value: bool)

  • bool get_use_texture_padding()

Si es true, genera una textura interna con un relleno adicional de un píxel alrededor de cada tile. El relleno de la textura evita un artefacto común donde aparecen líneas entre los tiles.

Deshabilitar esta opción podría conducir a una pequeña mejora en el rendimiento, ya que generar la textura interna requiere tanto memoria como tiempo de procesamiento cuando se modifica el recurso TileSetAtlasSource.


Descripciones de Métodos

void clear_tiles_outside_texture() 🔗

Elimina todos los tiles que no encajan en el área de textura disponible. Este método itera sobre todos los tiles del origen, por lo que se aconseja utilizar has_tiles_outside_texture() de antemano.


int create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1) 🔗

Crea un tile alternativo para el tile en las coordenadas atlas_coords. Si alternative_id_override es -1, le da un ID único generado automáticamente, o le asigna el ID dado de lo contrario.

Devuelve el nuevo identificador alternativo, o -1 si la alternativa no pudo ser creada con un alternative_id_override proporcionado.


void create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1)) 🔗

Crea un nuevo tile en las coordenadas atlas_coords con el size dado.


Vector2i get_atlas_grid_size() const 🔗

Devuelve el tamaño de la cuadrícula del atlas, que depende de cuántos tiles caben en la textura. Por lo tanto, depende del tamaño de texture, los margins del atlas y el texture_region_size de los tiles.


int get_next_alternative_tile_id(atlas_coords: Vector2i) const 🔗

Devuelve el ID alternativo que devolvería una llamada posterior a create_alternative_tile().


Texture2D get_runtime_texture() const 🔗

If use_texture_padding is false, returns texture. Otherwise, returns an internal ImageTexture created that includes the padding.


Rect2i get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) const 🔗

Devuelve la región del tile en las coordenadas atlas_coords para el frame dado dentro de la textura devuelta por get_runtime_texture().

Nota: Si use_texture_padding es false, devuelve lo mismo que get_tile_texture_region().


int get_tile_animation_columns(atlas_coords: Vector2i) const 🔗

Devuelve cuántas columnas tiene el tile en atlas_coords en su diseño de animación.


float get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const 🔗

Devuelve la duración del fotograma de animación frame_index para el tile en las coordenadas atlas_coords.


int get_tile_animation_frames_count(atlas_coords: Vector2i) const 🔗

Devuelve cuántos fotogramas de animación tiene el tile en las coordenadas atlas_coords.


TileAnimationMode get_tile_animation_mode(atlas_coords: Vector2i) const 🔗

Devuelve el modo de animación del tile en atlas_coords. Véase también set_tile_animation_mode().


Vector2i get_tile_animation_separation(atlas_coords: Vector2i) const 🔗

Devuelve la separación (como en la cuadrícula del atlas) entre cada fotograma de un tile animado en las coordenadas atlas_coords.


float get_tile_animation_speed(atlas_coords: Vector2i) const 🔗

Devuelve la velocidad de animación del tile en las coordenadas atlas_coords.


float get_tile_animation_total_duration(atlas_coords: Vector2i) const 🔗

Devuelve la suma de la suma de las duraciones de los fotogramas del tile en las coordenadas atlas_coords. Este valor debe dividirse por la velocidad de animación para obtener la duración real del bucle de animación.


Vector2i get_tile_at_coords(atlas_coords: Vector2i) const 🔗

Si hay un tile que cubre las coordenadas atlas_coords, devuelve las coordenadas de la esquina superior izquierda del tile (por lo tanto, su ID de coordenada). De lo contrario, devuelve Vector2i(-1, -1).


TileData get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const 🔗

Devuelve el objeto TileData para las coordenadas del atlas y el ID alternativo dados.


Vector2i get_tile_size_in_atlas(atlas_coords: Vector2i) const 🔗

Devuelve el tamaño del tile (en el sistema de coordenadas de la cuadrícula) en las coordenadas atlas_coords.


Rect2i get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const 🔗

Devuelve la región de textura de un tile en la textura del atlas. Para los tiles animados, se puede proporcionar un argumento frame para los diferentes fotogramas de la animación.


PackedVector2Array get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) 🔗

Devuelve un array de ID de coordenadas de tiles que se eliminarán automáticamente al modificar una o varias de estas propiedades: texture, margins, separation o texture_region_size. Esto se puede utilizar para deshacer los cambios que habrían causado la pérdida de datos de los tiles.


bool has_room_for_tile(atlas_coords: Vector2i, size: Vector2i, animation_columns: int, animation_separation: Vector2i, frames_count: int, ignored_tile: Vector2i = Vector2i(-1, -1)) const 🔗

Devuelve si hay suficiente espacio en un atlas para crear/modificar un tile con las propiedades dadas. Si se proporciona ignored_tile, actúa como si el tile dado no estuviera presente en el atlas. Esto se puede utilizar cuando quieres modificar las propiedades de un tile.


bool has_tiles_outside_texture() const 🔗

Comprueba si el origen tiene algún tile que no se ajuste al área de textura (ya sea parcial o completamente).


void move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i = Vector2i(-1, -1), new_size: Vector2i = Vector2i(-1, -1)) 🔗

Mueve el tile y sus alternativas en las coordenadas atlas_coords a las coordenadas new_atlas_coords con el tamaño new_size. Esta función fallará si ya hay un tile presente en el área dada.

Si new_atlas_coords es Vector2i(-1, -1), mantiene las coordenadas del tile. Si new_size es Vector2i(-1, -1), mantiene el tamaño del tile.

Para evitar un error, primero comprueba si un movimiento es posible usando has_room_for_tile().


void remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) 🔗

Elimina la alternativa de un tile con el ID alternativo alternative_tile.

Llamar a esta función con alternative_tile igual a 0 fallará, ya que la alternativa del tile base no se puede eliminar.


void remove_tile(atlas_coords: Vector2i) 🔗

Elimina un tile y su alternativa en las coordenadas atlas_coords.


void set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int) 🔗

Cambia el ID alternativo de un tile de alternative_tile a new_id.

Llamar a esta función con new_id de 0 fallará, ya que la alternativa del tile base no se puede mover.


void set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int) 🔗

Establece el número de columnas en el diseño de animación del tile en las coordenadas atlas_coords. Si se establece en 0, los diferentes fotogramas de la animación se disponen como una sola línea horizontal en el atlas.


void set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float) 🔗

Establece la duración duration del fotograma de animación frame_index para el tile en las coordenadas atlas_coords.


void set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int) 🔗

Establece cuántos fotogramas de animación tiene el mosaico en las coordenadas atlas_coords.


void set_tile_animation_mode(atlas_coords: Vector2i, mode: TileAnimationMode) 🔗

Establece el modo de animación del tile en atlas_coords en mode. Véase también get_tile_animation_mode().


void set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i) 🔗

Establece el espaciado (en mosaicos de la cuadrícula) entre mosaicos en el diseño animado del mosaico ubicado en las coordenadas atlas_coords.


void set_tile_animation_speed(atlas_coords: Vector2i, speed: float) 🔗

Establece la velocidad de animación del mosaico ubicado en las coordenadas atlas_coords.