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.

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à

Vector2i

margins

Vector2i(0, 0)

Vector2i

separation

Vector2i(0, 0)

Texture2D

texture

Vector2i

texture_region_size

Vector2i(16, 16)

bool

use_texture_padding

true

Metodi

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)


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.


Texture2D texture 🔗

La texture d'atlante.


Vector2i texture_region_size = Vector2i(16, 16) 🔗

  • void set_texture_region_size(value: Vector2i)

  • Vector2i get_texture_region_size()

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 🔗

  • void set_use_texture_padding(value: bool)

  • bool get_use_texture_padding()

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.