enemy.js
cc.Class({ extends: cc.Component,properties: { enemySpeed: 0,//设置加速度 },//初始化当前节点的y坐标 init: function () { this.node.y = 0; },onLoad () { },start () { },update (dt) { this.node.y += this.enemySpeed; //每帧运动 },});
game.js
cc.Class({ extends: cc.Component,properties: { enemyPrefab: { default: null,type: cc.Prefab,},createEnemy: function (parentNode) { let enemy = null; if (this.enemyPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象 enemy = this.enemyPool.get(); } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建 enemy = cc.instantiate(this.enemyPrefab); } enemy.parent = parentNode; // 将生成的敌人加入节点树 this.enemyNew = enemy; enemy.getComponent(‘enemy‘).init(); //接下来就可以调用 enemy 身上的脚本进行初始化, //如果不初始化enemy,在从对象池中获取this.enemyPool.get();的时候,该enemy身上的脚本参数还接着上次调用的时候; //因为执行this.enemyPool.put();只是把enemy重新放回对象池,并不是真正销毁;执行this.enemyPool.get()又可以重新获取出来; },//监听键盘 setInputControl: function () { cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.onKeyDown,this); },onKeyDown: function (event) { switch(event.keyCode) { case cc.KEY.t: this.enemyPool.put(this.enemyNew); //点击键盘T键销毁敌人 break; case cc.KEY.c: this.createEnemy(this.node); //点击C键创建敌人 break; } },onLoad () { this.enemyPool = new cc.NodePool(); //new一个对象池出来 this.setInputControl(); //加载场景后持续监听键盘 },// start () { // console.log(this.enemyPool.size()); // this.createEnemy(this.node); // }, update (dt) { console.log(this.enemyPool.size()); },});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。