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.

Sistemi di coordinate 2D e trasformazioni 2D

Introduzione

Questa è una panoramica dettagliata dei sistemi di coordinate 2D disponibili e delle trasformazioni 2D integrate. I concetti di base sono trattati in Trasformazioni di viewport e di canvas.

I Transform2D sono matrici che convertono le coordinate da un sistema di coordinate a un altro. Per utilizzarle, è utile sapere quali sistemi di coordinate sono disponibili in Godot. Per comprenderli meglio, il tutorial Matrici e trasformazioni tratta a fondo le caratteristiche interne.

Sistemi di coordinate 2D di Godot

Il seguente grafico offre una panoramica dei sistemi di coordinate 2D di Godot e delle trasformazioni dei nodi, delle funzioni di trasformazione e delle funzioni riguardo il sistema di coordinate disponibili. A sinistra si trova la schermata del Gestore di finestre del sistema operativo, a destra si trovano i CanvasItem. Per semplicità, questo grafico non include SubViewport, SubViewportContainer, ParallaxLayer e ParallaxBackground, i quali influenzano anch'essi le trasformazioni.

Il grafico si basa su un albero di nodi con la seguente forma: Window radice (incorpora finestre)Window (non incorpora finestre)CanvasLayerCanvasItemCanvasItemCanvasItem. Sono possibili combinazioni più complesse, come nodi Window e SubViewport profondamente annidati, tuttavia questo esempio intende fornire una panoramica generale della metodologia.

../../_images/transforms_overview.webp

Cliccare sul grafico per ingrandire.

  • Coordinate di elemento

    Questo è il sistema di coordinate locale di un CanvasItem.

  • Coordinate di elemento genitore

    Questo è il sistema di coordinate locali del CanvasItem padre. Quando si posizionano i CanvasItem nel Canvas, di solito ereditano le trasformazioni dei loro CanvasItem padre. Un'eccezione avviene tramite CanvasItems.top_level.

  • Coordinate di canvas

    Come accennato nel tutorial Canvas layers precedente, esistono due tipi di canvas (quello Viewport e quello CanvasLayer) ed entrambi hanno un sistema di coordinate canvas. Queste sono anche chiamate coordinate globali. Una Viewport può contenere più Canvas con sistemi di coordinate diversi.

  • Coordinate di viewport

    Questo è il sistema di coordinate della Viewport.

  • Coordinate di telecamera

    Questo è utilizzato internamente solo per funzionalità quali le proiezioni dei raggi dalla telecamera 3D.

  • Coordinate di incorporatore / Coordinate di schermo

    Ogni Viewport (Window o SubViewport) nell'albero di scene è incorporato in un nodo diverso o nel Gestore di finestre dell'OS. L'origine di questo sistema di coordinate è identica all'angolo superiore sinistro del Window o della SubViewport e la sua scala è quella dell'embedder o del Gestore di finestre dell'OS.

    Se l'embedder è il gestore delle finestre del sistema operativo, allora sono anche dette coordinate dello schermo.

  • Coordinate assolute di incorporatore / Coordinate assolute di schermo

    L'origine di questo sistema di coordinate è l'angolo superiore sinistro del nodo incorporante o della schermata del Gestore di finestre dell'OS. La sua scala è quella del nodo incorporante o del Gestore di finestre dell'OS.

    Se l'embedder è il gestore di finestre dell'OS, allora sono anche dette coordinate assolute dello schermo.

Trasformazioni dei nodi

Ciascuno dei nodi menzionati hanno una o più trasformazioni e la combinazione di questi nodi determina le trasformazioni tra i diversi sistemi di coordinate. Con poche eccezioni, le trasformazioni sono Transform2D e l'elenco seguente mostra i dettagli e gli effetti di ciascuna di esse.

  • Trasformazione di CanvasItem

    I CanvasItem sono nodi Control o nodi Node2D.

    Per i nodi Control questa trasformazione consiste in una posizione relativa all'origine del genitore e in una scala e rotazione attorno a un punto di rotazione.

    Per i nodi Node2D la proprietà trasformazione è costituito da posizione, rotazione, scala e inclinazione.

    La trasformazione influenza l'elemento stesso e solitamente anche sui CanvasItem figlio e, nel caso di un SubViewportContainer, influenza la SubViewport contenuta.

  • Trasformazione di CanvasLayer

    La trasformazione del CanvasLayer influenza tutti i CanvasItem dentro il CanvasLayer. Non influenza gli altri CanvasLayer o Window nella sua Viewport.

  • Trasformazione di CanvasLayer con segui viewport

    The follow viewport transform is an automatically calculated transform, that is based on the Viewport's canvas transform and the CanvasLayer's follow viewport scale and can be used, if enabled, to achieve a pseudo-3D effect. It affects the same child nodes as the CanvasLayer transform.

  • Trasformazione di canvas di viewport

    La trasformazione del canvas ha effetto su tutti i CanvasItems nel canvas predefinito della Viewport. Ha effetto anche sui CanvasLayer che seguono la trasformazione della viewport. La Camera2D attiva della Viewport funziona modificando questa trasformazione. Non ha effetto sulle finestre incorporate in questa Viewport.

  • Trasformazione di canvas globale di viewport

    Le Viewport hanno anche una trasformazione globale del canvas. Questa è la trasformazione principale e influenza tutte le singole trasformazioni di Canvas Layer e di finestre incorporate. È utilizzata principalmente nell'editor di CanvasItem di Godot.

  • Trasformazione di stiramento di viewport

    Finally, Viewports have a stretch transform, which is used when resizing or stretching the viewport. This transform is used for Windows as described in Risoluzioni multiple, but can also be manually set on SubViewports by means of size and size_2d_override. Its translation, rotation and skew are the default values and it can only have non-default scale.

  • Trasformazione di finestra

    Per ridimensionare e posizionare il contenuto della finestra come descritto in Risoluzioni multiple, ogni finestra contiene una trasformazione di finestra. Ad esempio, questa è responsabile per le barre nere ai lati della finestra, in modo che la viewport sia visualizzata con un rapporto d'aspetto fisso.

  • Posizione di finestra

    Ogni finestra ha anche una posizione per descriverne la posizione all'interno del suo embedder. L'embedder può essere un'altra viewport o il gestore di finestre del sistema operativo.

  • Trasformazione di restringimento di SubViewportContainer

    stretch insieme a stretch_shrink dichiarano per un SubViewportContainer se e di quale fattore intero la SubViewport contenuta deve essere ridimensionata rispetto alle dimensioni del contenitore.