我困惑了,注册全局碰撞和单个碰撞有什么区别?

假设节点A和B在同一层,我在A的脚本注册了一个全局碰撞,然后动态生成了一个C节点在A下面,D节点在B下面,C和D碰撞,我的理解selfCollider应该是指C吧,为什么打印出来的是D呢?而且更奇怪的是,有时候selfCollider又是C。。我现在傻眼了,求大佬扶我一下
image

大佬帮我看一下,C和D是用prefab生成的,allSkillArea.ts挂在allSkillArea节点上,我打算把所有的技能都放到allSkillArea节点,然后根据碰撞的selfCollider识别技能id,现在让我懵逼的是这样写导致回调的selfCollider不确定(按照这个思路去实现技能的识别有没有问题?或者还有其他的办法?)
image

手动置顶,蹲大佬指点

你的C和D是不是都注册了碰撞事件。

C和D都没有注册碰撞事件,C的Enabled Contact Listener打了勾。D的没有打,D是勾了Sensor


这是C和D的截图,脚本里都没有写碰撞注册事件

你把D上面的刚体组件去掉试试。

不能去掉哇,去掉刚体碰撞检测就没有了哇

我记得碰撞双方有一个带有刚体就行了。

可是我刚才把刚体去掉后连碰撞回调都不触发了 :rofl:

深夜蹲大佬帮俺分析

那就不要弄全局碰撞检测啊,检测C碰撞就获取C上面的collider.on,检测D就获取D的collider.on,这样C碰撞的回调selfCollider就是C,D碰撞回调selfCollider就是D,清清楚楚的多好。

1赞

有道理,回头我打算就这样做。不过我还是有疑问,全局碰撞是什么样的场景下会用到呢?