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...
TileSetAtlasSource
Eredita: TileSetSource < Resource < RefCounted < Object
Espone una texture di atlante 2D come un insieme di tasselli per una risorsa TileSet.
Descrizione
Un atlante è una griglia di tasselli disposte su una texture. Ogni tassello nella griglia deve essere esposto tramite create_tile(). Tali tasselli sono quindi indicizzati tramite le loro coordinate nella griglia.
Ogni tassello può anche avere dimensioni nelle coordinate della griglia, rendendolo più o meno celle nell'atlante.
È possibile creare le versioni alternative di un tassello tramite create_alternative_tile(), le quali sono quindi indicizzate usando un ID alternativo. Il tassello principalo (quello nella griglia), è accessibile con un ID alternativo pari a 0.
Ogni tassello alternativo ha una serie di proprietà che è definita dagli strati del TileSet della sorgente. Tali proprietà sono memorizzate in un oggetto TileData a cui è possibile accedere e modificare tramite get_tile_data().
Poiché le proprietà TileData sono memorizzate direttamente nella risorsa TileSetAtlasSource, è possibile impostare le loro proprietà anche tramite TileSetAtlasSource.set("<coords_x>:<coords_y>/<alternative_id>/<tile_data_property>").
Proprietà
|
||
|
||
|
||
|
Metodi
void |
|
create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1) |
|
void |
create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1)) |
get_atlas_grid_size() const |
|
get_next_alternative_tile_id(atlas_coords: Vector2i) const |
|
get_runtime_texture() const |
|
get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) const |
|
get_tile_animation_columns(atlas_coords: Vector2i) const |
|
get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const |
|
get_tile_animation_frames_count(atlas_coords: Vector2i) const |
|
get_tile_animation_mode(atlas_coords: Vector2i) const |
|
get_tile_animation_separation(atlas_coords: Vector2i) const |
|
get_tile_animation_speed(atlas_coords: Vector2i) const |
|
get_tile_animation_total_duration(atlas_coords: Vector2i) const |
|
get_tile_at_coords(atlas_coords: Vector2i) const |
|
get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const |
|
get_tile_size_in_atlas(atlas_coords: Vector2i) const |
|
get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const |
|
get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) |
|
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 |
|
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) |
Enumerazioni
enum TileAnimationMode: 🔗
TileAnimationMode TILE_ANIMATION_MODE_DEFAULT = 0
Le animazioni dei tasselli iniziano allo stesso tempo, sembrando identiche.
TileAnimationMode TILE_ANIMATION_MODE_RANDOM_START_TIMES = 1
Le animazioni dei tasselli iniziano in momenti a caso, apparendo varie.
TileAnimationMode TILE_ANIMATION_MODE_MAX = 2
Rappresenta la dimensione dell'enumerazione TileAnimationMode.
Costanti
TRANSFORM_FLIP_H = 4096 🔗
Rappresenta il flag di capovolgimento orizzontale della cella. Dovrebbe essere utilizzato direttamente con TileMapLayer per capovolgere i tasselli posizionati modificandone gli ID alternativi.
var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))
if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:
# Se la tessera non è già capovolta, capovolgila.
$TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)
Nota: Queste trasformazioni possono essere combinate per ottenere l'equivalente di rotazioni di 0, 90, 180 e 270 gradi, come mostrato di seguito:
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 🔗
Rappresenta il flag di capovolgimento verticale della cella. Vedi TRANSFORM_FLIP_H per l'utilizzo.
TRANSFORM_TRANSPOSE = 16384 🔗
Rappresenta il flag di trasposizione della cella. Vedi TRANSFORM_FLIP_H per l'utilizzo.
Descrizioni delle proprietà
Vector2i margins = Vector2i(0, 0) 🔗
I margini, in pixel, per spostare l'origine della griglia nella texture.
Vector2i separation = Vector2i(0, 0) 🔗
La separazione, in pixel, tra ciascuna regione della texture dei tasselli della griglia.
La texture d'atlante.
Vector2i texture_region_size = Vector2i(16, 16) 🔗
Le dimensioni base di un tassello nella texture (in pixel). Queste dimensioni devono essere maggiori del valore tile_size del TileSet.
bool use_texture_padding = true 🔗
Se true, genera una texture interna con un ulteriore padding di un pixel attorno a ogni tassello. Il padding della texture evita un artefatto comune in cui compaiono linee tra i tasselli.
Disabilitare questa impostazione potrebbe portare a un piccolo miglioramento delle prestazioni, poiché la generazione della texture interna richiede sia memoria sia tempo di elaborazione quando la risorsa TileSetAtlasSource viene modificata.
Descrizioni dei metodi
void clear_tiles_outside_texture() 🔗
Rimuove tutti i tasselli che non rientrano nell'area della texture disponibile. Questo metodo esegue un iterazione su tutti i tasselli della sorgente, quindi è consigliabile usare has_tiles_outside_texture() in anticipo.
int create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1) 🔗
Crea un tassello alternativo per il tassello alle coordinate atlas_coords. Se alternative_id_override è -1, assegna un ID univoco generato automaticamente, altrimenti assegna l'ID specificato.
Restituisce il nuovo identificatore alternativo, oppure -1 se l'alternativa non può essere creata con il alternative_id_override fornito.
void create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1)) 🔗
Crea un nuovo tassello alle coordinate atlas_coords con le dimensioni size.
Vector2i get_atlas_grid_size() const 🔗
Restituisce le dimensioni della griglia dell'atlante, che dipende da quanti tasselli possono essere inseriti nella texture. Dipende quindi dalle dimensioni della texture, dai margins dell'atlante e dalle texture_region_size dei tasselli.
int get_next_alternative_tile_id(atlas_coords: Vector2i) const 🔗
Restituisce l'ID alternativo che restituirebbe una chiamata successiva al 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 🔗
Restituisce la regione del tassello alle coordinate atlas_coords per il fotogramma frame all'interno della texture restituita da get_runtime_texture().
Nota: Se use_texture_padding è false, restituisce lo stesso di get_tile_texture_region().
int get_tile_animation_columns(atlas_coords: Vector2i) const 🔗
Restituisce il numero di colonne presenti nel layout di animazione del tassello alle coordinate atlas_coords.
float get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const 🔗
Restituisce la durata del fotogramma all'indice frame_index dell'animazione per il tassello alle coordinate atlas_coords.
int get_tile_animation_frames_count(atlas_coords: Vector2i) const 🔗
Restituisce il numero di fotogrammi dell'animazione presenti nel tassello alle coordinate atlas_coords.
TileAnimationMode get_tile_animation_mode(atlas_coords: Vector2i) const 🔗
Restituisce la modalità di animazione del tassello alle coordinate atlas_coords. Vedi anche set_tile_animation_mode().
Vector2i get_tile_animation_separation(atlas_coords: Vector2i) const 🔗
Restituisce la separazione (come nella griglia dell'atlante) tra ciascun fotogramma di un tassello animato alle coordinate atlas_coords.
float get_tile_animation_speed(atlas_coords: Vector2i) const 🔗
Restituisce la velocità di animazione del tassello alle coordinate atlas_coords.
float get_tile_animation_total_duration(atlas_coords: Vector2i) const 🔗
Restituisce la somma di tutte le durate dei fotogrammi del tassello alle coordinate atlas_coords. Questo valore deve essere diviso per la velocità di animazione per ottenere la durata effettiva del ciclo di animazione.
Vector2i get_tile_at_coords(atlas_coords: Vector2i) const 🔗
Se è presente un tassello che copre le coordinate atlas_coords, restituisce le coordinate in alto a sinistra del tassello (quindi il suo ID di coordinate). Altrimenti restituisce Vector2i(-1, -1).
TileData get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const 🔗
Restituisce l'oggetto TileData per le coordinate dell'atlante specificate e l'ID alternativo.
Vector2i get_tile_size_in_atlas(atlas_coords: Vector2i) const 🔗
Restituisce le dimensioni del tassello (nel sistema di coordinate della griglia) alle coordinate atlas_coords.
Rect2i get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const 🔗
Restituisce la regione di texture di un tassello nella texture d'atlante. Per tasselli animati, potrebbe essere fornito un argomento frame per i diversi fotogrammi dell'animazione.
PackedVector2Array get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) 🔗
Restituisce un array di ID di coordinate dei tasselli che saranno rimossi automaticamente quando si modifica una o più di queste proprietà: texture, margins, separation o texture_region_size. Può essere utilizzato per annullare le modifiche che avrebbero causato la perdita di dati dei tasselli.
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 🔗
Restituisce se c'è abbastanza spazio in un atlante per creare o modificare un tassello con le proprietà specificate. Se viene fornito ignored_tile, si comporta come se il tassello specificato non fosse presente nell'atlante. Questo può essere usato quando si desidera modificare le proprietà di un tassello.
bool has_tiles_outside_texture() const 🔗
Verifica se la sorgente contiene tasselli che non rientrano nell'area della texture (parzialmente o completamente).
void move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i = Vector2i(-1, -1), new_size: Vector2i = Vector2i(-1, -1)) 🔗
Sposta il tassello e le sue alternative dalle coordinate atlas_coords alle coordinate new_atlas_coords con le dimensioni new_size. Questa funzione fallirà se un tassello è già presente nell'area specificata.
Se new_atlas_coords è Vector2i(-1, -1), mantiene le coordinate del tassello. Se new_size è Vector2i(-1, -1), mantiene le dimensioni del tassello.
Per evitare un errore, verifica prima se è possibile uno spostamento tramite has_room_for_tile().
void remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) 🔗
Rimuovi l'alternativa di un tassello con l'ID alternativo alternative_tile.
La chiamata di questa funzione con alternative_tile uguale a 0 fallirà, poiché l'alternativa base del tassello non può essere rimossa.
void remove_tile(atlas_coords: Vector2i) 🔗
Rimuovi un tassello e la sua alternativa alle coordinate atlas_coords.
void set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int) 🔗
Cambia l'ID alternativo di un tassello da alternative_tile a new_id.
La chiamata di questa funzione con new_id di 0 fallirà, poiché l'alternativa base del tassello non può essere spostata.
void set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int) 🔗
Imposta il numero di colonne nel layout di animazione del tassello alle coordinate atlas_coords. Se impostato su 0, i diversi fotogrammi dell'animazione saranno disposti come una singola linea orizzontale nell'atlante.
void set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float) 🔗
Imposta la durata del fotogramma frame_index dell'animazione per il tassello alle coordinate atlas_coords su duration.
void set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int) 🔗
Imposta il numero di fotogrammi di animazione presenti nel tassello alle coordinate atlas_coords.
void set_tile_animation_mode(atlas_coords: Vector2i, mode: TileAnimationMode) 🔗
Imposta la modalità di animazione del tassello alle coordinate atlas_coords a mode. Vedi anche get_tile_animation_mode().
void set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i) 🔗
Imposta il margine (nei tasselli della griglia) tra ogni tassello nel layout di animazione del tassello alle coordinate atlas_coords.
void set_tile_animation_speed(atlas_coords: Vector2i, speed: float) 🔗
Imposta la velocità di animazione del tassello alle coordinate atlas_coords.