【发布时间】:2012-08-06 15:30:13
【问题描述】:
我正在将游戏从 iOS 和 Windows Phone 移植到 Android。我为移植所遵循的大部分代码都来自 Windows Phone 版本,只是因为它与 Java 最相似。我的问题与 LibGDX 中的 OrthographicCamera 类有关。
我使用游戏对象作为这个游戏的组件容器方法。这可以在这里阅读:http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/,这样你就知道我在说什么了。因此,游戏中的几乎所有内容都扩展了 Component 组件类。每个游戏对象,即一个球,都是一个由组件组成的游戏对象,即 Sprite、RigidBody(用于物理)、Transform2(位置、旋转等)。这包括 Camera2 类,它只是包装了一个 OrthographicCamera 成员。
我有两个问题,我一直在研究它。我无法弄清楚如何进行分层。游戏有一个抽屉,用户可以向下滑动以拖动打开。这应该在游戏中的任何其他内容之上。开发 XNA 版本的人实现这一点的方法是拥有多个 SpriteBatch,并且基本上将每个 SpriteBatch 视为一个层。这在 LibGDX 中不起作用,并且使用多个 SpriteBatches 是不好的做法。问题是,游戏对象被组织成一棵树,它们是根据树的遍历进行渲染的,因此最终排序是基于对象插入树的时间。我已经研究了 DecalBatch 以便我可以使用 Z 排序,但由于游戏即将完成,它需要分配重构。正如我所说,我尝试使用多个 SpriteBatches,但无论出于何种原因,这也不起作用。
由于这篇文章已经很长了,我将在另一个帖子中询问我的第二期。
【问题讨论】:
-
您在使用 Stage 吗?然后您可以创建另一个舞台或将内容添加到您的舞台的窗口。
-
我实际上就 Scene2D 的东西(Stage 所基于的)联系了 Mario(在主要的 LibGDX 开发人员中),他说我不应该将它用于 UI 的东西,或者非常简单的游戏。但是,这可能是一个想法,也许只是使用一个舞台作为抽屉。我会调查的。
-
我认为此时添加舞台会过于复杂。我认为它会起作用,但它需要分配重构。我在谷歌代码上找到了一个 LibGDX 的待办事项列表,他们已经为精灵添加了 z 顺序。它在 MUTS for 0.9 列表中。不要以为它已经完成了。
-
是的,如果您还没有使用它,请不要现在添加阶段。我的建议只是“如果”你正在使用阶段。
-
是的,我确实考虑过,这听起来像是我需要的,但马里奥说它对于完整的游戏来说不够强大。