actionscript-3 - 大物体的等距深度排序问题

标签 actionscript-3 sorting depth isometric

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

这是我的游戏截图:

enter image description here

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

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

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

最佳答案

我认为不可能根据每个对象的单个 x,y 值对场景进行排序,如果其中一些对象的长度足够长end 应该与另一个不同的深度。例如,考虑一下如果图片中的棕色椅子向左下方移动了一个正方形(到蓝色椅子和长沙发之间的正方形),您将如何处理渲染。它在场景中会比沙发后面的红色 table 更深,但需要在沙发顶部渲染,而沙发需要在 table 顶部。

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

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

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

关于actionscript-3 - 大物体的等距深度排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166667/

相关文章:

Flash/AIR AS3 : comparing contents of Screen. 屏幕

java - 我如何移动原始源图像而不是 imageProxy?

Java柏林噪声

python - 排序如何处理两个给定列表中的键和 lambda 函数

swift - 用 tie 元素按值排序字典不应更改其顺序

javascript - 如何在 Flash 应用程序中调用 JavaScript 函数?

javascript - 如何按字母顺序对元素进行排序并区分大小写

javascript - WebGL 显示帧缓冲区?

python - Opencv网络摄像头脚本不断地打开和关闭网络摄像头

C++/OpenCV - 深度图问题 : Items in the Point Cloud have some distortions