3

我正在将游戏从 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 排序,但由于游戏快完成了,它需要分配重构。

由于这已经是一个很长的帖子,我将在另一个帖子中询问我的第二个问题。

4

1 回答 1

5

我想通了。我从 LibGDX 向 Mario 发送了一条消息,他建议我在渲染对象之前对它们进行排序。我真的不知道该怎么做,因为它在一棵树上,我知道如何对一棵树进行排序,但排序不存在。我为层添加了一个字段,并使 GameObject 类实现了 Comparable,然后,在访问者模式接受方法中,我根据它们的层对所有节点子节点进行排序。它现在运行良好。

于 2012-08-09T14:29:30.663 回答