2012-01-11 3 views
3

J'utilise libgdx pour travailler sur un jeu mais je viens juste de le voir comment l'implémenter pour différentes tailles d'écran? J'ai trouvé comment positionner des images pour différentes tailles et résolutions mais comment faire pour que les sprites supportent différentes tailles d'écran? Mon background sur 320x480 va bien mais prend une toute petite place sur 480 par 800, comment y parvenir que ça marche sur tous les écrans?Sprites de jeu et prise en charge de plusieurs écrans

Répondre

5

Vous avez différentes options en fonction de ce que vous êtes heureux de le faire,

a. Vous pouvez utiliser un ensemble de sprites HQ réduits pour s'adapter à chacun des écrans;

dans Resize()

width = arg0; 
height = arg1; 

puis dans votre rendu()

batch.draw(textureRegion, -width/2, -height/2, width, height); 

va dessiner un sprite sur l'écran entier (en supposant la caméra orthographiques centrée à 0,0)

b. Vous pouvez utiliser différents ensembles de sprites pour différentes résolutions, puis charger des sprites en fonction des dimensions de la fenêtre.

3

Vous pouvez utiliser scene2d. Il vous pouvez informer la scène, que la fenêtre redimensionnée dans l'application

@Override 
public void resize(int width, int height) { 
    stage.setViewport(width, height, true); 
... 
} 
0

Diviser votre écran en unités virtuelles, par exemple la grille 10x10. Calculez vos unités virtuelles à partir de la taille réelle de l'écran.

VIRTUAL_UNIT_WIDTH = Gdx.graphics.getWidth()/10; 
VIRTUAL_UNIT_HEIGHT = Gdx.graphics.getHeight()/10; 

Et définir la taille de votre sprite via ces unités virtuelles et utiliser des unités virtuelles lors de l'appel de spriteBatch.draw(); Ainsi, vous pourrez conserver le même rapport d'aspect du jeu à travers différentes résolutions d'écran.

Espérons que cela vous donne une idée.

0

J'utilise l'approche ci-dessous et cela fonctionne pour presque toutes les tailles d'écran avec un problème mineur d'échelle mineur.

J'utilise toujours des images graphiques pour la taille de l'écran 1920.0x1080.0

ScreenViewport screenViewport=new ScreenViewport(camera); 
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight())); 
stage = new Stage(screenViewport); 

@Override 
public void resize (int width, int height) { 
    ScreenViewport screenViewport= (ScreenViewport) stage.getViewport(); 
    screenViewport.setUnitsPerPixel(Math.min(1920.0f/width,1080.0f/height)); 
    screenViewport.update(width,height,false); 
} 

Ici vous pouvez définir votre approche de Math.min() ou Math.max().

Il se traduira par la taille de votre appareil photo vue port près de 1920,0 * 1080,0

Device screen-size Math.max()  Math.max() 
800.0x480.0  1800.0x1080.0 1920.0x1152.0 
1920.0x1080.0  1920.0x1080.0 1920.0x1080.0 
2048.0x1440.0  1536.0x1080.0 1920.0x1350.0 

Note: Utilisez toujours camera.viewportWidth et camera.viewportHeight pour les postes fixes des jeux écrans de l'interface utilisateur.

Questions connexes