请问如何手动注册监听一次的碰撞函数

对象有点多,不是很灵敏

你的目标是点击了一个方块,那么与这个方块发送碰撞的方块都要消除掉?还是说与之碰撞的方块数量大于二时消除掉?

选中一个颜色,假如与它相邻----那就这个相邻系列的都消除,因为后面颜色要打乱和加多嘛

image
例如我点了1那么2 3 4消除还是说2 3 4 5 6 7 8 9 10 11 12 13都消除?

嗯嗯(———)这个 2 3 4 5 6 7 8 9 10 11 12 13都消除

一开始我是查不到哪个函数实时检测,后面是发现找到的那个函数每次就只传回一个碰撞对象,没法递归检测出来

emm,我个人想法,不一定最优,还是按照我之前说的方块自己挂一个刚体和一个碰撞检测区域,然后每个方块加一个点击事件,当你点击了这个节点以后,获取这个节点的碰撞区域的世界坐标,然后循环遍历所有同色方块的的碰撞区域的世界坐标,用Cocos的这个方法你可判断出两个矩形是否相交,你把相交的都记录下来然后消除掉?


这样的话你就不用在监听任何碰撞回调了

1赞

每个碰撞体加刚体接触开始和结束的两个监听,每个刚体挂个脚本,脚本记录当前刚体正在和哪些接触。当点击某个刚体的时候,去调用刚体里面的脚本,把存起来的数据节点,进行消除逻辑。

你这个思路很不错誒,我之前连线玩法就用正方形的,多边形不规则我没试过,等我看看要是不行就不要用碰撞回调了,用你这个方法

不知道是不是弄错了,每次监听就获取到一个正在碰撞的而已 :upside_down_face:

矩形也可以看作是一个多边形,你穿进去四个点就行,记录碰撞组也行,只是看你对碰撞检测用的少,让你去试你得试好久

嗯嗯,兄弟这个是这样用吗

block.js
image

GameView.js
image

你这传进去的为啥是当前点击的节点的坐标,不应该传进去当前点击节点的碰撞盒世界坐标吗?
你看看这个方法的说明

Ok啦,多谢多谢 :rose: :rose: