cocos 3.2碰撞后销毁报错,好像是bug

cocos3.2 2D物体碰撞回调后,调用this.node.destory()会直接报错。我个萌新被折腾了好久。




运行就直接就报错了。
看了报错信息,说销毁了两次以上,可是这就只触发了一次回调函数。
我就加了个setTimeout就好了。

  • Creator 版本: 3.2

  • 目标平台:edge(基于chrome内核)

  • 重现方式:例如玩家发射子弹,子弹碰撞回调中直接执行this.node.destory()就会出现如上报错信息

  • 首个报错:debug.ts:102 You are trying to destroy a object twice or more.

  • 编辑器操作系统:windows10 21H1

  • 重现概率:100%

延迟一帧销毁即可

1赞

可以在update中执行销毁操作
update() {
if(this._needDestroy && this.node.isValid) {
this.node.destroy();
}
}

onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) {
this._needDrestroy = true;
}

2赞