laya 2D 游戏场景中物体的动态层级

问题

  • laya中如何实现动态游戏物体的前后遮挡

概述

example.jpg

如上图,场景中根据角色Y坐标,动态调整物体层级

层级管理器

实现

  • 将 动态层级的游戏物体 创建在同一个显示节点(sprite)下
  • layoutElementsInLayer中对所有需要排序的物体根据y坐标进行排序,并修改节点的索引
  • 分帧调用layoutElementsInLayer
    /**
     * 游戏物体动态层级处理
     * @param root
     */
    private function layoutElementsInLayer(root:Sprite){
        var elements:Array = [];
        var len:uint = root.numChildren;
        for (var i:int = 0; i<len; i++){
            elements.push(root.getChildAt(i));
        }
        if(elements.length > 1){
            // 根据y坐标进行排序
            elements.sort(function (a:*, b:*):int {
                return a.y - b.y;
            })

            while ( len-- ){
                var display:Sprite = elements[len];
                if(root.getChildIndex(display) != len){
                    root.setChildIndex(display, len);
                }
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。