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

场景如下,现在又不同颜色种类的2D刚体道具自由下落完毕,在实例化出来的每个道具身上都有相同的触摸监听脚本,现在需要在点击某种颜色的刚体时给脚本加上的碰撞检测函数,只需要检测一次看下与他接触的道具是否为同一颜色,查了好久没有看的什么好点的实现,求教

现在要实现这个,应该是已经用了物理系统了,物理系统本身有碰撞,在它的碰撞回调中去记录对应碰撞的信息,触摸的时候就有数据了

嗯嗯已经用了物理系统了。我是设定一定的时间间隔保证掉落后稳定才是有效点击,问题是道具掉落过程中也会有很多碰撞,这个得咋办嘞

弄个单列记录一个标志位,等你的那个时间间隔到了,置为true,然后每个刚体的脚本执行回调前判断下这个标志位是否为true?

this.node.getComponent(Collider2D).once(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this)

对对对就是这么想的,核心问题是不知道怎么在时间到的时候启用回调,下图这四个碰撞检测函数只要用了 等到时间到需要启用它就已经结束了

哦晕,这个2.3 2D启用不了… :upside_down_face:

你一直开着碰撞就行,在每个回调里加个判断
if(标志位){
return;
}

1赞

ok,多谢多谢!原来onPreSolve()才是实时的,我先改进下看看有没有其他问题,
image

看回帖你已经解决了。盲猜是做物理三消 :nerd_face:

哈哈哈,对呀要弄广告得写个逻辑

合成大西瓜 :smiley: :smiley: :smiley:

有点像,falldown click 消除

无语住,碰撞函数一次只能检测到一次otherCollider,不能同时检测到几个
image

你要不试试刚体只处理物理效果,然后再加个碰撞检测,就不监听刚体碰撞回调,只监听碰撞检测回调,然后把碰撞检测回调的圆圈调的稍微比刚体范围大一点

刚体外面套一圈传感器么?

还有个问题,如何高效快速定位到你点击得那个球,好像每个加监听不怎么对,又不可以跟固定方格一样计算位置

不太理解 :sob:

叮叮叮叮叮叮!

你不是给每个单独加了点击事件吗??为啥不行??