同一屏幕上具有不同视口的多个阶段LIBGDX

时间:2018-07-31 16:13:17

标签: camera libgdx viewport scene2d

我正在尝试扩展我的应用程序,使其在各种宽高比上都可以工作。

我了解了视口和相机。得出的结论是,我应该在我的游戏阶段使用FitViewport,以便不增加任何资源。我将使用一些背景图像来填充由fitviewport引起的黑条。但是问题是,每当我使用FitViewport以外的任何其他视口作为背景图像时,整个阶段(包括背景阶段和主要阶段)都被拉伸了,有没有办法让我们摆脱FitViewport的黑白条?我尝试了所有背景的视口,即StretchViewport,ScreenViewport,FillViewport。

我错过了一些琐碎的事情吗?或者可以在同一屏幕上设置多个不同的视口。

ps我能够在同一屏幕上设置两个不同大小的相同视口。 这是屏幕,我正在寻找fitviewport。请注意我要消除的顶部和底部的白条。

enter image description here

1 个答案:

答案 0 :(得分:1)

this answer为我工作。仅供参考

  

您将需要第二个视口,可能是带有ExtendViewport的   与您的FitViewport相同的虚拟尺寸。

//create:
fitViewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);
extendViewport = new ExtendViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);

//resize:
fitViewport.update(width, height);
extendViewport.update(width, height);

//render:

fitViewport.apply();
batch.setProjectionMatrix(fitViewport.getCamera().combined);
batch.begin();
//draw game
batch.end();

extendViewport.apply();
batch.setProjectionMatrix(extendViewport.getCamera().combined);
batch.begin();
//draw stuff in border
batch.end();
     

如果您要确保边框不会与您的游戏重叠,则可以   可以交换上面的绘制顺序。

     

或者您可以仅使用ExtendViewport来完成所有工作。