使用事件表实现图层深度管理

点我下载案例工程

图层深度用于控制显示在画面中的物体的层级顺序。 位于图层上方的物体会盖住下方的物体。

本教程中将讲解如何使用事件表来实现图层的深度管理,主要用于一些自动深度管理无法实现的特殊排序需求。例如:同一个图层中,在根据Y坐标决定深度的同时,主角必须一直位于敌人的前方遮住敌人。

具体实现

首先将火箭、主角和敌人分别放入同一个图层中。(顺序随意)

首先先进行常规的深度管理,也就是根据Y坐标决定层级。Y坐标位于的在前方,Y坐标小的位于后方。

为了方便管理,我们将所有需要排序的对象放入同类组中。

使用系统的条件【排序循环遍历】来遍历同类组中的对象。排序规则为y坐标升序排列。


选中同类组,选择【移至顶部或底部】动作,参数选择【顶部】

执行上述操作后,就会每帧去对同类组中的对象进行遍历,并排列图层顺序。

特殊规则

接下来实现特殊的深度管理规则:敌人的图层顺序必须始终低于主角。
该规则会导致一些冲突。 例如,顺序位于主角上方的火箭,可能坐标低于敌人。正常的情况下,此时敌人的图层顺序会高于主角。
所以我们要做一个特别的处理:先将敌人放置在主角的下方,然后对坐标小于主角的火箭再次进行深度管理。

先将敌人放在主角下方。

然后选中所有坐标小于主角的同类组对象,子事件内再次进行排序循环遍历,如果敌人的y坐标小于同类组对象,将敌人移动到该对象的下方。


最后我们为敌人和主角添加八方向运动组件。 主角用【WASD】控制,敌人用【方向键】控制

预览游戏,可以发现,敌人始终位于玩家的下方。

当主角坐标小于火箭时,火箭在主角前面。

主角坐标大于火箭时,火箭位于主角后面。

当主角坐标小于火箭时,敌人不会和该火箭进行深度管理。

当主角坐标大于火箭时,敌人会正常的进行深度管理,图层顺序高于火箭。

以上内容就是如何用事件表控制深度管理。 本教程只列举了一种自定义规则。 重点在于理解循环遍历比较坐标来判断图层顺序的方法,用户可根据自己的需求自行实现自定义深度管理。