【问题标题】:as3: Containers, depth and walls? ISOMETRICas3:容器、深度和墙壁?等距
【发布时间】:2014-03-07 21:24:53
【问题描述】:

我应该如何(这是一个等距游戏)使深度合乎逻辑?

例如,如果一个农夫高于另一个农夫(也就是 y 值较低,但他较高),我将如何让他看起来好像在他下面的农夫后面?

墙壁也是如此。

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

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

等轴测视角使代码更加混乱

我想要的一个很好的比较是像旧的节拍游戏(如 TMNT),你可以在某种程度上左右和上下行走(例如在路上)。在那些道路的中间,有时会有桶之类的物体。你可以在它上面和后面,也可以在它下面和前面。

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

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

【问题讨论】:

    标签: actionscript-3 3d containers depth isometric


    【解决方案1】:

    我不确定 ActionScript 中影响元素绘制顺序的不同方式。一个典型的想法是 Z-index,它告诉图形引擎首先要绘制什么。它可以在 AS3 中通过 MovieClip 的 ChildIndex 以某种方式进行模拟,请参阅 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/,了解这些方法之间的关系。


    一个非常粗略的想法(如果这甚至可能的话)是有一组 MovieClips 或堆栈作为图像的层,每层大约一个瓦片深。然后将层中的对象和角色分配到与它们的 y 变量对应的层中,并将层movieclip 作为父movieclip 的子层,并安排childindex,以便最靠后的层在前并首先绘制,最前面的层在最后要画的线。

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

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


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

    【讨论】:

    • 关于小层的有趣想法..但我不知道如何实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    相关资源
    最近更新 更多