-
Creator 版本: 3.4.2
-
目标平台: Chrome
-
重现方式:
import { _decorator, Component, Node, RigidBody, PhysicsSystem2D, RigidBody2D, Collider, BoxCollider, BoxCollider2D, Collider2D, Contact2DType, loader, resources, Texture2D, Sprite, SpriteFrame, spriteAssembler, SpriteAtlas, sp } from ‘cc’;
const { ccclass, property } = _decorator;
@ccclass(‘EnemyControl’)
export class EnemyControl extends Component {
@property
enemySpeed: number = 200;
@property
private enemyDieBoolean: boolean = false;
start () {
// 碰撞监测
let collider = this.getComponent(Collider2D);
collider.once(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
}
update (deltaTime: number) {
// 敌人移动
this.node.setPosition(this.node.position.x, this.node.position.y - this.enemySpeed * deltaTime);
if (this.node.position.y < -900 || this.enemyDieBoolean == true) {
this.node.setPosition(this.node.position.x, this.node.position.y);
this.enemyDie();
}
}
// 碰撞检测
onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D) {
if (otherCollider.tag == 1) {
this.enemyDieBoolean = true;
} else if (otherCollider.tag == 0) {
this.enemyDieBoolean = true;
}
}
// 死亡脚本
enemyDie() {
// 载入爆炸图片
resources.load('enemy0_die/spriteFrame', SpriteFrame, (err, sp) => {
this.getComponent(Sprite).spriteFrame = sp;
})
// 300毫秒后销毁
setTimeout(() => {
this.node.destroy();
}, 300);
}
}
- 首个报错:“Uncaught TypeError: Cannot read properties of null (reading ‘destroy’)”
本人新手,刚接触Cocos3.x版本,请教大佬们一个简单的问题,卡了很久了,谢谢!
我依照飞羽大大的教程做了一个cocos3.x版本的打飞机小游戏,在子弹接触到敌机让其死亡的时候,先预加载敌机爆炸图片,然后300毫秒后让其销毁,但是总是报错,找不到destroy,考虑了异步加载的问题,因此也采用过promise, await的办法,但是仍然报这个错误,destroy找不到。
谢谢大家了!