我目前的想法是循环每个元素,根据坐标距离及z-index的值来判断是否被覆盖。
不知道还有没有别的更好的想法
逻辑和表现分离
大佬 这是打算开始搞一波了?
没有,就是突然想了下该如何实现比较好
一个UI就30多个正方形,给正方形设置一个num = 1—n 。最后按这个children.sort就行了。
数显分离,也就是显示的就是显示,数据层就是数据层,实际上可以看成是数组矩阵
能盖上去的是一组矩阵,不能盖上去的都是单独的数组
比如第一层是[[1,3,5],[1,3,5]],第二层盖上去[][2,4],[2,4]]这样子,这个是很规律的排列,盖上去也就是半个身位,并不是无序的,2可以覆盖1,3这样子
一个元素占四个格子,判断该元素的上一层的四个格子是否有元素
每个格子都有一个索引,越靠上,索引越小,点击的时候判断点击的位置有哪些格子,取索引值最小的应该就行吧
这个问题的出发点:
1、被覆盖的node需要有半透明遮罩;
可以用矩形检测:const colliderList = PhysicsSystem2D.instance.testAABB(rect);
然后遍历 colliderList , 判断当前节点在父节点的 children 数组中的位置 (用getSiblingIndex,按照index大的遮挡小的逻辑比一下);
2、点击穿透;可以用按钮,也可以用 rect.contains(this.touchStartPoint),还可以用点检测;
但是羊来了是静态的node , 可以提前都写死,哪个覆盖哪个都可以设计好,然后做标记,剩下的就很简单了
这个游戏的核心消除玩法我做过 先分层 每一层的小方块 点击的时候判断点击位置里面的小方块 看他上层有没有压住的 有就return 没有就点中最上层的
用数据判断,不用显示判定
优秀的程序员数据,显示分离
试了一下,他这个排列是固定的几种组合,最简单的排列好以后直接遍历一下判断包围盒是否相交,如果相交哪个节点在下层变灰 点击不响应就是了
核心逻辑就是判断牌与牌之间的距离,同时判断牌到相机的相对距离
无论哪种做法,都会有一方不方便
直接摆UI,命名(做层标记)不方便,数显分离策划不方便(非可视化摆布局)
所以最佳方案是:做一个简易编辑器,网格放置(记得网格要比元素小很多,这样可以虽然摆放),可以编辑当前层。
我如果有空可以做,不过估计也没空,不过其实你们在下面跟我贴,大佬们看到自然有人会做了放store了。
兄弟你这错过了暴富的机会啊。。。
给策划用编辑器和生产二维数据并不冲突
相同的游戏玩法有可能带来的并不是同一种游戏体验,UI,音乐,不同的额外功能等都会导致不同的体验,而且别人是花了大钱推的,个人开发者就在梦里想想好了