我应该怎么做(这是一个等距游戏)才能使深度合乎逻辑?
例如,如果一个农民高于另一个农民(也就是说y值较低,但是他的价格较高),我怎么能这样做,以至于他看起来好像是在他下面的农民身后呢?
墙也一样。
我希望角色看起来像是在墙后面,如果他们在......后面。
但如果他们在前面,就在墙前。
等角度视角使代码更加混乱
我想要的一个很好的比较就像旧的beatemup游戏(如TMNT),你可以在某种程度上向左和向右走动(例如在路上)。在这些道路的中间,有时像桶一样的物体。你可以在它上面或后面,或者在它前面和下面。
或类似http://www.maxdamage.org/wp-content/uploads/2012/10/tmnt02.jpeg
之类的东西您会看到4个字符。角色可以在彼此的前面(如果他们站在后面)。
答案 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的特定情况,这也可能是错误的。