Ricerca…


finestre

Per supportare più risoluzioni e proporzioni, Libgdx utilizza le cosiddette Viewports .
Esistono alcuni tipi di Viewports che utilizzano strategie diverse per gestire più risoluzioni e proporzioni.
Un Viewport utilizza una Camera sotto il cofano e ne gestisce viewportHeight e viewportWidth . Opzionalmente è possibile assegnare a Viewport una Camera nel suo costruttore, altrimenti verrà utilizzata una OrthographicCamera per impostazione predefinita:

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

Inoltre, è necessario specificare worldWidth e worldHeight nel worldHeight della viewport. Questo spazio rappresenterà il sistema di coordinate virtuale che userai per specificare la posizione degli oggetti da disegnare e le dimensioni. La trasformazione della viewport, che può essere applicata ad una SpriteBatch, ad esempio, si prenderà automaticamente cura di trasformare le coordinate logiche in coordinate dello schermo reali, con un modo conforme al tipo effettivo di viewport che si sta utilizzando. Ad esempio, quando si utilizza una proiezione ortografica ( OrthographicCamera , che è l'impostazione predefinita): se la dimensione del mondo è 12,8 per 7,8 metri e lo schermo del dispositivo è 2560x1560 pixel, il mondo verrà proiettato dinamicamente con 200 pixel al metro.

Quando cambia la dimensione di Viewport (ad esempio se l'Orientamento dello schermo dello Smartphone sta cambiando), è necessario informare il Viewport di tale modifica. aggiornerà automaticamente la viewportHeight e viewportWidth della Camera :

public void resize(int width, int height) {
    viewport.update(width, height);
}

I Viewport gestiscono anche OpenGL Viewport e modificano l'area disegnabile secondo necessità.

I Viewport si occupano anche della conversione delle coordinate dello schermo in coordinate di gioco, necessarie soprattutto per il prelievo:

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

Viewport integrati

Ci sono un paio di finestre integrate, ognuna delle quali fa cose diverse. Ecco un elenco dei nomi e delle loro descrizioni:

Nome della vista Descrizione
StretchViewport Allungerà lo schermo. Nessuna barra nera, ma le proporzioni potrebbero essere disattivate.
FitViewport Ottimizzerà la sua dimensione in base al rapporto d'aspetto. Potrebbe avere barre nere.
FillViewport Piuttosto uguale a FitVieport, ma riempie sempre l'intero schermo.
ScreenViewport Riempie sempre l'intero schermo, ma non ridimensiona i bambini.
ExtendedViewport Mantiene le proporzioni del mondo senza barre nere estendendo il mondo in una direzione
CustomViewport Una vista personalizzata programmata. Potrebbe avere barre nere e potrebbe mantenere le proporzioni.

Viste personalizzate

Puoi creare il tuo viewport personalizzato. Potrebbe avere barre nere e potrebbe o meno mantenere le proporzioni, a seconda di come lo si programma. Una vista personalizzata sarebbe simile a questa:
public class Tutorial extends Viewport . Avresti bisogno di sovrascrivere l' update(width, height) , ma il gioco è fatto.

Un altro tentativo potrebbe essere quello di estendere il generico ScalingViewport e fornire un altro ridimensionamento che non è già fornito. Supponi di averlo impostato su Scaling.none . Sarebbe simile a questo: Esempio di immagine Se vuoi qualche riferimento, puoi trovare le classi di viewport incorporate qui .

StretchViewport

StretchViewport è un tipo di Viewport , che supporta una dimensione dello schermo virtuale.
Questo ti permette di definire una larghezza e altezza fissa (indipendente dalla risoluzione).
StretchViewport , come suggerisce il nome, allunga lo schermo virtuale, se le proporzioni virtuali non corrispondono alle proporzioni reali. OpenGL Viewport non verrà modificato e non appariranno barre nere.

Uso:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

FitViewports sono viewport che mantengono sempre le proporzioni. Lo fa creando barre nere sui bordi dove rimane spazio. Questa è una delle finestre più comunemente usate.

Uso:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow