as3:容器,深度和墙壁? ISOMETRIC

时间:2014-03-07 21:24:53

标签: actionscript-3 3d containers depth isometric

我应该怎么做(这是一个等距游戏)才能使深度合乎逻辑?

例如,如果一个农民高于另一个农民(也就是说y值较低,但是他的价格较高),我怎么能这样做,以至于他看起来好像是在他下面的农民身后呢?

墙也一样。

我希望角色看起来像是在墙后面,如果他们在......后面。

但如果他们在前面,就在墙前。

等角度视角使代码更加混乱

我想要的一个很好的比较就像旧的beatemup游戏(如TMNT),你可以在某种程度上向左和向右走动(例如在路上)。在这些道路的中间,有时像桶一样的物体。你可以在它上面或后面,或者在它前面和下面。

或类似http://www.maxdamage.org/wp-content/uploads/2012/10/tmnt02.jpeg

之类的东西

您会看到4个字符。角色可以在彼此的前面(如果他们站在后面)。

1 个答案:

答案 0 :(得分:0)

我不确定ActionScript中用于影响元素绘制顺序的不同方式。一个典型的想法是Z-index,它告诉图形引擎首先绘制什么。它可以通过MovieClip的ChildIndex以某种方式在AS3中进行模拟,请参阅Arrange (z) order of objects in Flash with ActionScript 3?

但另请参阅此http://oreilly.com/catalog/actscript/chapter/ch13.html#36994有关堆栈中动画片段的堆叠顺序和深度参数以及AS2中的swapDepths()方法和http://www.matthijskamstra.nl/blog/index.php/2008/08/27/from-as2-to-as3-where-did-it-go-swapdepths/这些方法相关的方法。


一个非常粗略的想法(如果这是可能的话)是有一个MovieClip或堆栈数组作为图像的图层,每个图层大约有一个图块深。然后在图层中分配与其y变量对应的对象和字符,并将图层动画片段作为父动画片段的子项,并将childindex排列为后面最大的图层首先绘制并先绘制,前面层为最后一层要绘制的线。

移动角色时,如果y坐标超出当前图层的范围,则重新分配到上方或下方的一个图层。

根据y坐标对同一图层中的对象进行排序。


也许仅根据y坐标对对象进行排序就足够了。多层可以通过使用较小的列表进行排序来加快速度,但对于AS的特定情况,这也可能是错误的。