2015-08-27 2 views
0

Я немного читал о том, что делают другие люди, чтобы иметь дело с различными разрешениями экрана, но я все еще очень смущен.Libgdx Box2d разрешение экрана

Если у меня есть изображения с высоким разрешением и спрайты, которые я хочу использовать, должен ли я работать с экраном, похожим на 1080x1920, и создавать некоторые методы, которые уменьшаются для экрана с более низким разрешением? Или я должен попытаться сжать его до некоторого разрешения средней площади и масштабироваться вверх и вниз по мере необходимости?

Также может ли кто-нибудь дать мне хороший пример того, как масштабировать различные разрешения? Могу ли я, например, посмотреть, какое соотношение между моим игроком спрайтом и моим исходным экраном (скажем, 1/6 от ширины и высоты), и когда изменяется разрешение, я просто пытаюсь сохранить это соотношение? Или есть лучший способ сделать это?

Еще одна вещь, которую я также использую Box2d для физики и прочее, если это имеет значение, я уже должен использовать пиксель на метр, чтобы перейти между ними.

+0

Работа с различными видовыми экранами в основном основана на том, что вы считаете лучшим для своей игры. Полный раздел [раздел в wiki-странице libgdx] (https://github.com/libgdx/libgdx/wiki/Viewports). –

+0

Обычно у вас есть фиксированный размер для вашей игры, а затем изменяйте область просмотра, чтобы размер случайного размера окна увеличивался или уменьшался. –

ответ

1

вы не должны создать свой собственный механизм и, если честно, не должны заботиться о разрешении на всех, благодаря видовых и Scene2d Этапы.

Viewport - это своего рода определение того, как обрабатывать экран, когда дело доходит до изменения размера из-за изменения разрешения - если оно должно растягиваться? или, может быть, остаться фиксированным? Существует много видов видовых экранов (и каждый вид - это еще один класс, поэтому вы выбираете вид окна просмотра, создающий объект выбранного класса), и каждый из них имеет свое поведение.

Вы можете прочитать больше о Viewport здесь:

https://github.com/libgdx/libgdx/wiki/Viewports

этап является своего рода презентация абстракции - давайте думать о сцене в театре и актера на нем. Этап - это просто объект-вид обработчика, который вы рисуете в разделе рендеринга. Актеры вы изображения, метки, кнопки и т.д.

Вы можете прочитать больше о сцене здесь:

Все, что вам нужно сделать, это создать сцену, что вы будете добавлять свои актеры (кнопки, изображения, ярлыки ...) и установите для него свой пользовательский видовой экран.

public GameScreen(Main game) 
    { 
     super(game); 

     viewport = new ExtendViewport(this.screenWidth, this.screenHeight); // viewport definition is ExtendViewport viewport; screenWidth and Height are defined width and height of your screen 

     stage = new MyStage(); //stage definition is Stage stage; 
     stage.setViewport(this.viewport); 
    } 

    @Override 
    protected void show() 
    { 
     ... 

     stage.addActor(someLabel); //someLabel definition is Label someLabel; and it is created somewhere before 

     ... 
    } 

    @Override 
    public void render(float delta) 
    {    
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     this.viewport.update(this.screenWidth, this.screenHeight); 
     this.stage.act(); 
     this.stage.draw(); 
    } 

    @Override 
    public void resize(int width, int height) 
    { 
     //you need this function to keep screen size updated 
     this.screenWidth = width; 
     this.screenHeight = height; 
    } 

Теперь о вашем размере sprites'es - это не очень хорошо иметь очень очень большие ресурсы, если это будет мобильное приложение - большинство мобильных устройств имеют небольшие разрешения, а так что это не хорошо, чтобы держать большие файлы в вашем app - помните, что он занимает место на диске.