【问题标题】:Isometric depth sorting issue with big objects大物体的等距深度排序问题
【发布时间】:2012-06-25 08:53:30
【问题描述】:

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

这是我的游戏截图:

如您所见,深度排序在 1x1 平铺对象之间时效果很好。我只是使用它们的 x 和 y 坐标(相对于等轴测图)对它们进行排序。

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

知道我应该如何处理深度排序吗?

【问题讨论】:

    标签: actionscript-3 sorting depth isometric


    【解决方案1】:

    如果其中一些对象的长度足够长以至于一端的深度应该与另一端不同.例如,考虑一下如果图片中的棕色椅子向左下方移动了一个正方形(到蓝色椅子和长沙发之间的正方形),您将如何处理渲染。它在场景中会比沙发后面的红色桌子更深,但需要在沙发顶部渲染,而沙发需要在桌子顶部。

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

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

    将较大的对象拆分为1x1 大小的块也很不错,因为您可以将它们模块化。也就是说,您可以通过将1x1 以不同的组合组合在一起来构建不同大小的对象。例如,如果您将图像中的2x1 表格垂直切成两半,并创建一个适合它们之间的1x1 中间图块,您可以将设计拉伸到3x110x1,具体取决于如何多次重复中间的瓷砖。还有很多其他方法可以让平铺图形看起来不错,只需要少量的艺术。

    【讨论】:

    • 感谢您的回答。我肯定无法使用第一个解决方案,因为是用户建立了自己的赌场。我不能给他设限。但是第二个解决方案似乎很有趣,我会尝试一下,看看我能不能得到一些工作。 ;)
    【解决方案2】:

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

    其他注意事项: - 从上到下渲染“多”件按屏幕 Y 轴排序。 - 'multi' 的南部(即屏幕左下角)组件成为锚定瓷砖位置(在沙发的情况下,它最左边的部分)。 - 考虑到每个地图位置也可以拥有自己的垂直对象堆栈;通过 screen-Y 偏移每个对象的渲染模拟高度/高度,并且这些必须从下到上排序(例如,从最低高度到最高高度)。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 2011-12-01
      • 2012-05-14
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多