2d碰撞回调重复执行多次是什么原因?怎么解决?


子弹打到敌机05`SV2@$OW9NWROSIXPDZ7N
一发子弹击中,碰撞回调多次执行image
刚入门,实在找不到人问了

看下注册事件是不是写错了。或许你写了这个

PhysicsSystem2D.instance.on(Contact2DType.PRE_SOLVE, this.onBeginContact, this);

超哥 你那mvp怎么来的

官方给的啊,你们这些人,老是隐藏信息,怕被发现摸鱼嘛 :joy:

没错,就是这个let collider = this.getComponent(Collider2D);
if (collider) {
collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
}

我碰撞组件原本是多边形碰撞组件 PolygonCollider2D,我改成盒碰撞组件BoxCollider2D 就好了,这是什么原因?

1赞

我是cjy

加个变量,碰撞的一瞬间改变变量的值,就不再进行碰撞。
或者碰撞后马上销毁子弹的刚体。

同样的问题 :sob: 这还有其他解法么

1赞

我也是,我怀疑就是个BUG,怎么会一次碰撞触发多次的

在文档里找到了这个,不知道是不是这个原因