Libgdx Hud有两个阶段

时间:2015-02-10 12:14:21

标签: android libgdx stage hud

我有一个应用程序,目前正在使用单个阶段,但我需要添加一个侧面显示/部分作为HUD,其上有分数/生命等,以便HUD位于左侧,并且主屏幕右侧。主游戏画面将被修复,不会四处移动。

从研究中我发现了一些解决方案。

1 - 两个阶段 2 - 一组有两组,可能使用水平组 3 - 两个摄像头一个阶段 4 - 一个阶段,一个摄像机,但为每组演员改变摄像机的位置。

我认为,选项1是我的偏好,但我有一些问题。

  • 舞台是否总是填满整个画面,或者我可以在我想要的地方开始吗?这将使右侧屏幕更容易根据该屏幕的0,0计算位置,而不是总是必须将HUD的宽度添加到任何计算中。
  • 我是否需要处理视口?目前我没有使用一个(我认为这意味着我的舞台默认设置为缩放)但是由于这个原因,没有任何东西看起来很紧张。我不太了解视口,但似乎总是要与它们达成妥协,即黑条顶部或侧面。
  • 如果我有两个阶段,他们每个人都有自己的相机吗?我需要这个吗?我是否可以将右侧相机瞄准偏移,这样我仍然可以从0,0画出东西,而不是整个画面的左下角?

最后,关于主题,我对spritebatch有点困惑。我目前没有使用过,因为我使用的是舞台。那可以吗,还是我还应该以某种方式与舞台一起使用?并将我的所有演员加入其中?

1 个答案:

答案 0 :(得分:6)

我理解正确,你正在为你的游戏世界和你的HUD使用scene2d。并且HUD并没有覆盖游戏世界,而是专门使用它自己的部分屏幕。

阶段并不总是填满整个屏幕。他们没有填充或不填充任何东西的概念,因为他们可以拥有从屏幕上抽出的物体。但是,它们被剪裁为由其视口定义的矩形。

在您的情况下,您似乎需要两个视口,因此需要两个阶段。你说你没有使用视口,但你是......舞台自动创建自己的ScalingViewport,它像StretchViewport一样设置。 (文档中没有提到ScalingViewport,这已经过时了。)StretchViewport通常很糟糕,因为你的游戏会被扭曲以适应设备的宽高比。

ExtendViewports不会导致黑条,只要你不设置它们的最大宽度/高度,我认为通常是任何游戏世界观的最佳选择。

您可以设置两个视口以覆盖您自己计算的屏幕的特定部分。由于这是一个专门的案例,我认为你必须直接子类化Viewport类(不是它的一个子类)并使用viewport.setScreenBounds(...)来操纵它们。

关于你的上一个问题:是的,两个阶段中的每一个都有自己的视口,每个视口都有自己的摄像头。将两个视口设置为每个视口都有自己的屏幕部分后,您还可以将它们设置为将各自的左下角视为0,0。