我目前正在构建一个 as3 等距游戏,但我在深度排序方面遇到了很多问题。我已经寻找解决方案,但没有找到任何与我的问题匹配的东西(矩形对象)。
这是我的游戏截图:
如您所见,深度排序在 1x1 平铺对象之间时效果很好。我只是使用它们的 x 和 y 坐标(相对于等轴测图)对它们进行排序。
当我有更大的物体时,问题就出现了,比如 2x2 或 1x4 或 4x1。
知道我应该如何处理深度排序吗?
我目前正在构建一个 as3 等距游戏,但我在深度排序方面遇到了很多问题。我已经寻找解决方案,但没有找到任何与我的问题匹配的东西(矩形对象)。
这是我的游戏截图:
如您所见,深度排序在 1x1 平铺对象之间时效果很好。我只是使用它们的 x 和 y 坐标(相对于等轴测图)对它们进行排序。
当我有更大的物体时,问题就出现了,比如 2x2 或 1x4 或 4x1。
知道我应该如何处理深度排序吗?
我认为不可能根据每个对象的单个x
,y
值对场景进行排序,如果其中一些对象的长度足够长以至于一端的深度应该与另一端不同。例如,考虑一下如果图片中的棕色椅子向左下方移动了一个正方形(到蓝色椅子和长沙发之间的正方形),您将如何处理渲染。它在场景中会比沙发后面的红色桌子更深,但需要在沙发顶部渲染,而沙发需要在桌子顶部。
我认为有两个简单的解决方案:
将较大的对象拆分成不同1x1
大小的部分也很不错,因为您可以将它们模块化。也就是说,您可以通过将1x1
不同组合的部件组合在一起来构建不同大小的对象。例如,如果您将2x1
图像中的表格垂直切成两半,并创建一个1x1
适合它们之间的中间图块,您可以将设计拉伸到3x1
或10x1
,具体取决于您重复中间图块的次数。还有很多其他方法可以使平铺图形看起来不错,只需要少量的艺术。
Ultima Online 仿真器(特别是 POL,尽管可能还有其他仿真器)通过实现和使用“多”的概念来实现这一点 - 由分割的较大图形部分组成的单个对象。这些分割图形使得它们的精灵在 iso 网格边界的左右角点垂直分割。
其他注意事项: - 从上到下渲染按屏幕 Y 轴排序的“多”件。- 'multi' 的南部(即屏幕左下角)组件成为锚定瓷砖位置(在沙发的情况下,它最左边的部分)。- 考虑到每个地图位置也可以拥有自己的垂直对象堆栈;通过 screen-Y 偏移每个对象的渲染模拟高度/高度,并且这些必须从下到上排序(例如最低高度到最高高度)。
祝你好运!