我有一个应用程序,目前正在使用单个阶段,但我需要添加一个侧面显示/部分作为HUD,其上有分数/生命等,以便HUD位于左侧,并且主屏幕右侧。主游戏画面将被修复,不会四处移动。
从研究中我发现了一些解决方案。
1 - 两个阶段 2 - 一组有两组,可能使用水平组 3 - 两个摄像头一个阶段 4 - 一个阶段,一个摄像机,但为每组演员改变摄像机的位置。
我认为,选项1是我的偏好,但我有一些问题。
最后,关于主题,我对spritebatch有点困惑。我目前没有使用过,因为我使用的是舞台。那可以吗,还是我还应该以某种方式与舞台一起使用?并将我的所有演员加入其中?
答案 0 :(得分:6)
我理解正确,你正在为你的游戏世界和你的HUD使用scene2d。并且HUD并没有覆盖游戏世界,而是专门使用它自己的部分屏幕。
阶段并不总是填满整个屏幕。他们没有填充或不填充任何东西的概念,因为他们可以拥有从屏幕上抽出的物体。但是,它们被剪裁为由其视口定义的矩形。
在您的情况下,您似乎需要两个视口,因此需要两个阶段。你说你没有使用视口,但你是......舞台自动创建自己的ScalingViewport,它像StretchViewport一样设置。 (文档中没有提到ScalingViewport,这已经过时了。)StretchViewport通常很糟糕,因为你的游戏会被扭曲以适应设备的宽高比。
ExtendViewports不会导致黑条,只要你不设置它们的最大宽度/高度,我认为通常是任何游戏世界观的最佳选择。
您可以设置两个视口以覆盖您自己计算的屏幕的特定部分。由于这是一个专门的案例,我认为你必须直接子类化Viewport类(不是它的一个子类)并使用viewport.setScreenBounds(...)
来操纵它们。
关于你的上一个问题:是的,两个阶段中的每一个都有自己的视口,每个视口都有自己的摄像头。将两个视口设置为每个视口都有自己的屏幕部分后,您还可以将它们设置为将各自的左下角视为0,0。