2016-06-09 124 views
0

我目前正在研究LibGDX手机游戏应用程序。我遇到的问题是,我希望世界的宽度和高度为480x480,屏幕宽度和高度为640x480。屏幕上额外的240个单位将用于渲染UI,有点像ROTMG或Clash Royale(游戏中的卡片视图)。渲染游戏世界小于屏幕宽度和高度

我曾考虑过用另一台相机渲染游戏的UI,但这不是我想要的设计风格。我希望游戏的逻辑和坐标处于世界的宽度和高度范围内,而不是占用UI的额外空间。

我该怎么做?

P.S.游戏是2d

P.P.S.我想让游戏保持这个配置的大小。

回答

1

Denfeet,创建一个带2组实例的全屏舞台 - 其中一个用于UI,另一个用于游戏。组:游戏界限为0,0,480,480。界面的界限为480,0,240,480。现在,如果你想在相对于游戏组的坐标系中工作,例如,调用Group.localToStageCoordinates(Vector2 localCoords)游戏组(或者让自己成为一个辅助方法,这样你就不必一直写这个长名字)。此外,用户界面和游戏逻辑可以保持完全分开 - 魔术:-)。

+0

哦,哇,我没有想到!我会更多地关注Group类,但理论上,如果你说我可以用组来做到这一点,那么创建第二个阶段会更容易,还是更高效?谢谢 – Denfeet

+0

WonderfulWorld,我看了更多的小组,并看到你可以设置一个剔除区域,但是我仍然不明白如何使相机和播放器集中在这个组中。我没有要求代码示例(除非你可以),但是你能否详细说明你建议的帮助类? – Denfeet

+0

那么,如果可能的话,你一定要坚持1阶段。让我们说,除非你是反复彻底重写代码的粉丝,否则这将为你保留最大的灵活性。相机以舞台为中心,而不是任何一个组,但是这只是一个问题,因为您只需要正确布置游戏组。只有在过度调用Group.localToStageCoordinates()时,如果使用Group.addActor(),则Actor的边界将自动地相对于该组的坐标(Actor)位置0工作,0是该组的0, 0.继续 – WonderfulWorld

0

我总是喜欢将我的游戏与UI分开。您可以创建一个全屏相机,并将其UI放置在Scene2D舞台上。除非你想要的确切尺寸,你不必担心定位,因为你只是覆盖你的UI元素。如果你想为你的游戏使用一个舞台,那么就创建一个第二阶段,一个用于游戏,另一个用于UI。

无论如何,看起来像你在像素思维。你的游戏不需要知道像素,只需要渲染你的游戏世界。如果我将有一个大小为10 x 10的瓷砖,并且我想向玩家展示瓷砖的正方形10x10,我会为它创建一个new FitViewport(100, 100)。该Viewport计算世界单位回到它正在运行的设备上的像素。这使得您或任何在您的程序中工作的人更符合逻辑。我的球员不是256 pixels高,因为这是图像的高度,没有我的球员是1,80m高,并使用图像来显示。如果他想像忍者一样跳跃,他应该跳过另一位球员说2m,他落在9.8m/s

相关问题