2012-07-09 22 views
11

`Sto sviluppando il mio primo gioco su Android Adnengine. È un gioco di corse dall'alto. Ho usato lo sfondo della parallasse e alcune macchine. L'ho provato sul mio dispositivo che è più piccolo di larghezza e altezza.Dimensioni dello sprite su diverse dimensioni dello schermo Andengine Android

Ho posizionato le auto con 32 e altezza 64 in base alla larghezza della telecamera, altezza. Funziona bene con le mie dimensioni dello schermo ma su schermi di dimensioni maggiori, come il Galaxy Tab, c'è un enorme spazio lasciato nel gioco, perché le dimensioni delle macchine rimangono le stesse che devo usare nella potenza di due.

Come posso utilizzare immagini che si adattano a tutte le dimensioni dello schermo? Devo utilizzare immagini diverse in base alle dimensioni dell'immagine con diversa larghezza e altezza della fotocamera? Sono sicuro che c'è una soluzione per questo.

Ho già modificato il file manifest per supportare dimensioni piccole, grandi e xlarge.

public Engine onLoadEngine() { 

    final Display display = getWindowManager().getDefaultDisplay(); 
    CAMERA_WIDTH = display.getWidth(); 
    CAMERA_HEIGHT = display.getHeight(); 

    //Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3); 

    mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    engine = new Engine(new EngineOptions(true, 
      ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
        CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
      true).setNeedsSound(true)); 

    return engine; 
} 
+0

se utilizzerai una RatioResolutionPolicy quando avvii il motore, ne prenderà uno per te – jmroyalty

+0

Ho appena modificato la mia domanda con il mio codice, puoi aiutarmi di più ??? Sto usando RatioResolutionPolicy –

risposta

14

L'aspetto dell'utilizzo di una politica di risoluzione del rapporto è che è possibile progettare il gioco in una dimensione particolare, ad esempio 800x480, che è molto popolare per i telefoni in questi giorni.

Penso che la maggior parte delle persone che si allontanano stia pensando di dover tirare la larghezza/altezza del display corrente e usarla per inizializzare il motore.

Il punto di una politica di risoluzione del rapporto - a quanto ho capito - si imposta le proprie dimensioni su valori hard coded e si lascia che il criterio di risoluzione del rapporto gestisca le differenze da un dispositivo al successivo.

CAMERA_WIDTH = 800; 
CAMERA_HEIGHT = 480; 

//Toast.makeText(getApplicationContext(), CAMERA_WIDTH, 3); 

mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
engine = new Engine(new EngineOptions(true, 
     ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(
       CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsMusic(
     true).setNeedsSound(true)); 

Una volta fatto le cose in questo modo, allora solo bisogno di essere sicuri di grafica e la spaziatura guardare bene al vostro pre scelto larghezza/altezza - in questo esempio 800 x 480. Se tutto funziona e si adatta e sembra buono , quindi la politica di risoluzione del rapporto si prenderà cura di cose quando il dispositivo ha una dimensione dello schermo diversa.

Almeno questo il mio prendere su come dovrebbe funzionare - Scrivo per 800 x 480 e tutto sembra buono sulla mia tablet troppo 7" - scontato che non è un importante tratto

+0

Ho testato uno sfondo ad alta risoluzione per la scena di gioco (1240x840) con la fotocamera 800x480, lo sfondo sembra tagliato. Quindi non capisco come funzioni bene tu !!!!!! –

+0

quindi giralo - scrivi per la risoluzione più alta usando una fotocamera di 1240x840 e lascia che AndEngine si occupi dei dispositivi più piccoli. Come ho detto, scrivo per 800x480 ma il mio tablet è solo 1280x800 – jmroyalty

+0

Come per mio guarda, usa la fotocamera con risoluzione 1024x600. Funziona bene con dispositivi di piccole e alte risoluzioni. – Siddharth

3

Prendere l'altezza del dispositivo e la larghezza e quindi algebricamente rendere lo sprite una percentuale della larghezza e dell'altezza dello schermo.

Spero che questo aiuti.

+0

Finora ho trovato solo questa soluzione –

0

Secondo la mia esperienza, credo. che il modo migliore per attaccare questo problema è quello di trattare due principali rapporti dello schermo (5: 4, 5: 3) che sono popolari nella maggior parte dei dispositivi

Si sceglie un'alta risoluzione per ciascun rapporto e si lascia il motore riduci se la dimensione dello schermo del dispositivo è inferiore

+0

le dimensioni della fotocamera devono essere come le dimensioni dello schermo. –

Problemi correlati