离谱了,2D物理碰撞组件的离奇BUG

BUG重现步骤:
1、现在我有一个四边形墙体节点,上下左右子节点都添加了 盒碰撞组件(BoxCollider2D)
2、然后我又创建了一个圆球(怪物)节点,添加了 圆形碰撞组件(CircleCollider2D)
3、接着我又创建了一个圆球(子弹)节点,添加了圆形碰撞组件(CircleCollider2D)
4、然后我在项目设置里设置了物理碰撞分组,并都正确给上诉节点设置了group

5、最终我需要实现:
1、子弹和墙体碰撞,开启碰撞回调,【需要】2D刚体物理碰撞效果,实现反弹子弹,所以我把子弹和墙体都加了Rigidbody2D刚体组件

2、怪物和墙体碰撞,开启碰撞回调,【不需要】物理碰撞效果,只通过回调让怪物转向

3、子弹和怪物碰撞,开启碰撞回调,【不需要】物理碰撞效果,只通过回调让怪物扣血,然后子弹消失,所以我就没给怪物加Rigidbody2D刚体组件

可是现在问题来了:
1、怪物和墙体碰撞没任何问题
2、子弹和怪物碰撞大几率出现爆红错误提示
Uncaught TypeError: Cannot read properties of null (reading ‘enabledContactListener’)

最后解决:需要给怪物也要加2D刚体组件 Rigidbody2D

我就奇怪了,我子弹不需要和怪物发生碰撞效果,我就简单处理回调就行,为什么要加2D刚体组件 Rigidbody2D

然后官方文档也没这个说明,你就不能在代码里加个日志提示么?操蛋

你大概看了下你这个应该是 移除子弹的时候导致子弹和怪物碰撞丢失了box2d对象 建议先移除子弹的刚体在移除子弹 我看你这个项目 没有复杂的物理效果 建议你用ecs框架 自
己写移动

这个就是,你如果启用的是box2d物理的话,监听事件的节点上一定要加刚体,不然会报错,如果你用的bulint(忘了叫啥)的内置物理就不会报错了。

当你用box2d的时候,a加了刚体,b没加,a与b碰撞的时候,引擎内部会去检测a和b有没有加刚体,b没有刚体,就是会报你那个错误

我是2种碰撞:
1、怪物和墙
2、子弹和怪物

子弹撞墙反弹我2个都加了刚体
然后子弹和怪物因为只需要碰撞回调,所以我怪物没加,导致会报错,必须3者都加刚体