一个销毁节点的错误

cocos creator版本:3.3.1
我要做一个类似坦克大战的游戏,就写了这么几句话:

import { _decorator, Component, Collider2D, Contact2DType } from 'cc';

const { ccclass, property } = _decorator;

@ccclass('Bullet')

export class Bullet extends Component {

    onLoad() {

        this.getComponent(Collider2D).on(Contact2DType.BEGIN_CONTACT, this.onHit, this);

    }

    onHit(self: Collider2D, other: Collider2D) {

        this.node.destroy();

    }

}

结果:



这是我写的问题,还是Creator的问题?

用self.node.destroy()试试?

没有用,还是一样的!

那调用removefromparent呢?别用destroy了

效果是一样的!

多刷论坛,不要在回调中直接销毁节点,延迟一帧销毁

1赞

设置延时试试

1赞

这个延迟一帧怎么写呢?
setTimeout(() => {
this.node.destroy();
}, 1);
写成这样确实可以,有没有专业一点的写法?

1赞

可以在控制组件里面加一个属性,然后在自身UPDATE或者组件控制器里面检测属性然后销毁

组件控制器怎么检测属性?

比如你坦克有血量,你碰撞之后只是减少血量,坦克自己每帧会检测血量,检测到自己血量低于0就删除回收,或者不是坦克自己检测,有个坦克控制器去检测

坦克控制器?是不是管理类啊?

是的…