我正在尝试扩展我的应用程序,使其在各种宽高比上都可以工作。
我了解了视口和相机。得出的结论是,我应该在我的游戏阶段使用FitViewport,以便不增加任何资源。我将使用一些背景图像来填充由fitviewport引起的黑条。但是问题是,每当我使用FitViewport以外的任何其他视口作为背景图像时,整个阶段(包括背景阶段和主要阶段)都被拉伸了,有没有办法让我们摆脱FitViewport的黑白条?我尝试了所有背景的视口,即StretchViewport,ScreenViewport,FillViewport。
我错过了一些琐碎的事情吗?或者可以在同一屏幕上设置多个不同的视口。
ps我能够在同一屏幕上设置两个不同大小的相同视口。 这是屏幕,我正在寻找fitviewport。请注意我要消除的顶部和底部的白条。
答案 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来完成所有工作。