camera - 同一屏幕上具有不同视口 LIBGDX 的多个阶段
问题描述
我正在尝试扩展我的应用程序以在各种纵横比上类似地工作。
我阅读了有关视口和相机的信息。并得出结论,我应该在我的游戏阶段使用 FitViewport,这样就不会拉伸任何资产。我将使用一些背景图像来填充由 fitviewport 引起的黑条。但问题是,每当我使用 FitViewport 以外的任何其他视口作为背景图像时,整个舞台(背景和主舞台)都会被拉伸,有没有办法摆脱 FitViewport 的黑白条?我尝试了所有的背景视口,即 StretchViewport、ScreenViewport、FillViewport。
我错过了一些非常微不足道的东西吗?或者是否可以在同一屏幕上设置多个不同的视口。
ps 我能够在同一个屏幕上设置两个不同大小的相同视口。这是屏幕,我正在寻找fitviewport。注意我试图消除的顶部和底部的白条。
解决方案
这个答案对我有用。仅供参考
您将需要第二个视口,可能是与 FitViewport 具有相同虚拟尺寸的 ExtendViewport。
//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 来开始所有的事情。
推荐阅读
- java - 一种优雅的方式来计算每个位置中每种类型的数量
- python - Pydroid 能识别 random.choice 吗?
- c# - 如何从 csv 文件中读取某个列?
- ios - Laravel 后端未正确接收从 Cordova advanced-http post 作为 json 发送的数据
- r - R中的多行子集?
- react-native - 有没有办法隐藏标签导航器的默认屏幕,使其不会出现在 react-native 的底部标签中?
- python - 根据熊猫数据框中的条件将两列相乘?
- python - 如何执行N个函数来保持计数?
- python - 使用 LLDB API 获取使用 ARM-GCC 编译的 elf 文件中表达式的地址
- javascript - 使句子中间的文本加粗