cocos creator 碰撞不生效问题

今天在b站学习飞羽老师的飞机大战的时候,发现子弹和敌机碰撞不生效。

研究了一下,发现是因为使用了EnemyManager去生成敌机,所以需要在每个敌机的onLoad的时候开启碰撞检测。

飞羽老师说在playerControl里面开启,但是好像是由于版本问题,没有生效。改成在EnemyControl中就可以了

代码如下

复制代码
import BulletControl from "./BulletControl";

const {ccclass, property} = cc._decorator;

@ccclass
export default class EnemyControl extends cc.Component {

    // 是否死亡
    isDie: boolean = false;

    onLoad() {
        // 开启碰撞检测
        cc.director.getCollisionManager().enabled = true;
    }

    start () {

    }

    update (dt) {
        // 移动
        if (!this.isDie) {
            this.node.y -= 200 * dt;
        }
        // 移动出屏幕后销毁
        if (this.node.y < -850) {
            this.node.destroy()
        }

    }

    // 死亡
    die() {
        this.isDie = true;
        // 加载爆炸图片
        cc.loader.loadRes("enemy0_die", cc.SpriteFrame, (err, res) => {
            this.node.getComponent(cc.Sprite).spriteFrame = res;
        })
        // 300毫秒后销毁
        setTimeout(() => {
            this.node.destroy()
        }, 300);
    }
}
复制代码

 

posted @   菲菲菲菲菲常新的新手  阅读(697)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2017-09-18 centos7 ping127.0.0.1不通
点击右上角即可分享
微信分享提示