新手求助:新版本的碰撞体要怎么用?在回调中销毁节点会报错

代码如下
onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) {

    // 只在两个碰撞体开始接触时被调用一次

    this.node.destroy();

}

start () {

    // [3]

    let bulletCollider = this.getComponent(Collider2D);

    if (bulletCollider) {

        bulletCollider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact);

    }

}

错误信息
Uncaught TypeError: Cannot read properties of undefined (reading ‘node’)
at onBeginContact (Bullet1Control.ts:31:14)
at BoxCollider2D.emit (callbacks-invoker.ts:348:25)
at BuiltinPhysicsWorld._emitCollide (builtin-world.ts:169:12)
at BuiltinPhysicsWorld.step (builtin-world.ts:107:18)
at PhysicsSystem2D.postUpdate (physics-system.ts:264:31)
at Director.tick (director.ts:708:38)
at callback (game.ts:802:26)

这个我觉得是节点问题,尝试下判断this.node.isVaild 再执行销毁

节点销毁最好放到帧末

这时候碰撞逻辑其实还没执行完 ,延迟一帧执行就可以了

如果你是用this.node的话可能需要把this bind进去。