2016-04-03 67 views
1

我已经完成了我的游戏,这个游戏根据Gdx.graphics.getWidth()方法相应地调整为屏幕宽度的百分比,并且它在所有屏幕上都能很好地工作。libgdx - >摄像头和视口

现在我正在学习视口,但似乎有更多的麻烦,比如什么时候需要在世界协调或什么时候需要实际的屏幕像素。

我是否必须不断地改变这两种测量方式?这似乎有很多更多的麻烦,比如果我只是按比例缩小旧的方式...

我可以使用整个屏幕,并手动使图片不拉伸,如果我用FitViewport我会像黑条和游戏将完全不同。

为什么要使用这些端口,因为我似乎无法理解他们任何明确的建议...

+0

看看http://stackoverflow.com/help/how-to-ask。无论您是直接使用视口还是相机,世界和屏幕坐标之间的转换量都是相同的。视口只是使处理各种纵横比更容易。没有看到你所指的代码,没有什么可说的。 – Xoppa

+0

那么,如果我做了一个游戏,天空中有物体掉下来,如果我使用FitViewport,那么物体不会产生在屏幕的顶部,也不会从屏幕的最左边到最右边产生。因此,对于我的游戏,我无法使用视口,因为它看起来很丑,所以我用%做了它,所以我不明白为什么人们会使用视口,如果游戏是静止的... –

+0

对于绝大多数游戏,ExtendViewport是应该用于非UI内容的唯一视口。 FitViewport是一种懒惰的方式,不用担心缩放带黑条。 – Tenfour04

回答

0

的事情是,你不必做任何事情尤其是在进行任何转换。

Viewport是一种处理您的应用程序在多种类型的屏幕(我的意思是很多其他比例)渲染的工具,你不必担心它了。

唯一需要做的就是“告诉”视口什么是您的屏幕的大小,并通过更新视口来处理屏幕大小调整。然后,你对待你的应用程序就像它总是例如800 x 600px无论它看起来实际上如何。

您的应用将呈现的方式取决于您将使用的视口实现。例如:

  • FitViewport将适合您的屏幕设备并添加一些黑网吧
  • FillViewport将适合您的屏幕设备并切断溢出部分
  • 等等...

看一看official Viewport libGDX tutorial。你也可以看看this thread来得到一些关于如何处理视口的信息。

+0

嗯,不输入处理器使用屏幕坐标,将逻辑?还是有可能使用这些视觉像素(800X600)来处理所有事情,因为这样做是有道理的...还有一件事,看起来像extendViewport是最有用的一个,或者唯一有用的,但是如何让背景变为全部屏幕,而精灵也相对于屏幕,因为ExtendViewport以某种方式扩展它,所有都是奇怪的...你有任何例子吗?对不起,但我真的很困惑,因为我做了一个游戏没有任何这些东西,并完美缩放... –

+0

http://pastebin.com/rjtPprqD < - 当前代码,我使用800x600,但如果窗口是而不是800x600,我将桌面移动到更高的屏幕上,精灵停留在相同的位置,但它应该向上移动 –

+0

您应该看看另一个libgdx的SO主题(我在这个主题中有一些答案) - 也是提供很好的介绍,应该清除一些问题:)回答你关于背景的问题 - 你可以用许多视口创建许多舞台,例如用于背景的FillViewport舞台和用于UI按钮等的ExtendViewport的第二阶段......但是不要创建由于性能问题,很多阶段(如> 10) –