1、无法在碰撞检测中销毁节点
如果在碰撞检测中销毁当前节点会报错:
You are trying to destroy a object twice or more.
需要在碰撞周期外销毁,可使用setTimeOut
:
onCollisionEnter(selfCollider: Collider2D, otherCollider: Collider2D) {
setTimeout(() => {
this.node.destroy()
}, 10);
}
2、实例化预制体需要挂载父节点后才能设置世界坐标
const enemyIns: Node = instantiate(this.enemyPrefab)
enemyIns.setWorldPosition(new Vec3(10,10,0)) // 设置的是相对位置,跟setPosition效果相同
enemyIns.setParent(this.node)
由于节点的世界坐标是在场景加载和节点布局完成后计算的,所以必须添加到场景上才能设置世界坐标,即放在setParent
方法后面设置。