关于羊了个羊的实现讨论,如何判断元素是否被另一个覆盖?大家有没有啥好的想法

我目前的想法是循环每个元素,根据坐标距离及z-index的值来判断是否被覆盖。
不知道还有没有别的更好的想法 :joy:

逻辑和表现分离

大佬 这是打算开始搞一波了?

没有,就是突然想了下该如何实现比较好

这个游戏的卡片都是规则的正方形啊,你用cocos自带的cc.Intersection.rectRect检测下?

一个UI就30多个正方形,给正方形设置一个num = 1—n 。最后按这个children.sort就行了。

1赞

数显分离,也就是显示的就是显示,数据层就是数据层,实际上可以看成是数组矩阵

能盖上去的是一组矩阵,不能盖上去的都是单独的数组

比如第一层是[[1,3,5],[1,3,5]],第二层盖上去[][2,4],[2,4]]这样子,这个是很规律的排列,盖上去也就是半个身位,并不是无序的,2可以覆盖1,3这样子

1赞

一个元素占四个格子,判断该元素的上一层的四个格子是否有元素

1赞

每个格子都有一个索引,越靠上,索引越小,点击的时候判断点击的位置有哪些格子,取索引值最小的应该就行吧

2赞

这个问题的出发点:
1、被覆盖的node需要有半透明遮罩;
可以用矩形检测:const colliderList = PhysicsSystem2D.instance.testAABB(rect);
然后遍历 colliderList , 判断当前节点在父节点的 children 数组中的位置 (用getSiblingIndex,按照index大的遮挡小的逻辑比一下);
2、点击穿透;可以用按钮,也可以用 rect.contains(this.touchStartPoint),还可以用点检测;
但是羊来了是静态的node , 可以提前都写死,哪个覆盖哪个都可以设计好,然后做标记,剩下的就很简单了

这个游戏的核心消除玩法我做过 先分层 每一层的小方块 点击的时候判断点击位置里面的小方块 看他上层有没有压住的 有就return 没有就点中最上层的

用数据判断,不用显示判定
优秀的程序员数据,显示分离

试了一下,他这个排列是固定的几种组合,最简单的排列好以后直接遍历一下判断包围盒是否相交,如果相交哪个节点在下层变灰 点击不响应就是了

核心逻辑就是判断牌与牌之间的距离,同时判断牌到相机的相对距离

贴一下2年前做的,层级数据用多维数组,数据和显示分离
是否被覆盖就检测多维数祖的上一层(上,左上,右上,左下,右下)是否有值即可。

关卡数据的多维数组

3赞

无论哪种做法,都会有一方不方便

直接摆UI,命名(做层标记)不方便,数显分离策划不方便(非可视化摆布局)

所以最佳方案是:做一个简易编辑器,网格放置(记得网格要比元素小很多,这样可以虽然摆放),可以编辑当前层。

我如果有空可以做,不过估计也没空,不过其实你们在下面跟我贴,大佬们看到自然有人会做了放store了。

兄弟你这错过了暴富的机会啊。。。

给策划用编辑器和生产二维数据并不冲突

相同的游戏玩法有可能带来的并不是同一种游戏体验,UI,音乐,不同的额外功能等都会导致不同的体验,而且别人是花了大钱推的,个人开发者就在梦里想想好了

1赞