等距深度排序问题与大对象

时间:2012-06-23 03:46:08

标签: actionscript-3 sorting depth isometric

我目前正在构建as3等距游戏,但我在深度排序方面遇到了很多问题。我已经搜索了一个解决方案,但没有发现任何与我的问题相符的东西(矩形对象)。

以下是我游戏的截图:

enter image description here

正如您所看到的,深度排序在1x1 tile对象之间运行良好。我只是使用他们的x和y坐标(相对于等轴测图)来对它们进行排序。

当我有更大的物体时会出现问题,例如2x2或1x4或4x1。

知道如何处理深度排序呢?

2 个答案:

答案 0 :(得分:8)

我不认为可以根据每个对象的单个xy值对场景进行排序,如果其中一些可能足够长,一端应该是不同的深度比另一个。例如,如果你的照片中的棕色椅子向下移动一个方格(到蓝色椅子和长沙发之间的方格),请考虑如何处理渲染。它会比沙发后面的红色桌子更深,但是需要在沙发上呈现,这需要在桌子的顶部。

我认为有两个简单的解决方案:

  • 设计你的 只对大型物体使用一种重叠的级别。对于 例如,您可以指定对象的深度基于其深度 最近的角落,这将要求你避免把东西放进去 它最远的位的前面(因为它将在它们之上呈现)。 或者你可以坚持使用当前的代码(似乎使用了 最远的角落深度)并避免把任何东西放在后面 更近的部分。您可能仍然遇到字符和其他问题 虽然移动的物体。你或许可以做到 如果你小心你的设计,麻烦的瓷​​砖无法进入 但在某些情况下,这可能过于严格。
  • 将大型物体分解成较小的物体 哪个会有自己的深度。你可能想要走对了 低至1x1件,每件都具有明确的深度。您 可能会选择将代码中较大的对象保持为不可见 用于较小件的容器,或者它们可以被淘汰 完全,无论哪种方式都可以让您更轻松地加载和启用 与各种各样的互动。

将较大的对象拆分为1x1大小的块也可以很好,因为您可以将它们模块化。也就是说,您可以通过将1x1个部分组合在一起来构建不同大小的对象。例如,如果您将图片中的2x1表格垂直缩小一半,并创建了适合它们的1x1中间图块,则可以将设计延伸到3x1或{ {1}},取决于重复中间图块的次数。还有很多其他方法可以使平铺图形看起来很好,只需要适量的艺术作品。

答案 1 :(得分:2)

Ultima在线仿真器(特别是POL,尽管可能还有其他人)通过实现和使用“多”概念来实现这一目标 - 一个由切割的大图形组成的单个对象。这些切割图形使得它们的精灵在iso网格边界的左角和右角点垂直分割。

其他考虑因素: - 渲染'多'件从上到下排序屏幕-Y轴。 - 'multi'的南部(即屏幕左下角)组件成为锚定瓦片位置(在沙发的情况下,最左边的部分)。 - 考虑每个地图位置也可以保持自己的垂直对象堆栈;通过屏幕偏移每个对象的渲染-Y模拟高度/高度,这些必须从下到上排序(例如,从最低海拔到最高海拔)。

祝你好运!