HeavyBullets,这个变量你哪里注册了?你应该this.HeavyBullets= cc.instantiate(Prefab)
啊?汗一个,原来是这样,谢谢。
您好, reload:function(){
this.NewHeavyBullets = cc.instantiate(Prefab);
this.parent = scene;
this.setPosition(0,0);
改成这样之后,提示是未定义……是不是还得在Var一下呢?这点搞乱了……,先Var,然后再this还是怎么写……再多教教我吧
你this.NewHeavyBullets = cc.instantiate(Prefab); 这句应该是‘Prefab’未定义吧??
按照你前面的properties定义,NewHeavyBullets应该是在编辑器中从asset中拖拽出来的,然后
var nb = cc.instantiate(this.NewHeavyBullets);
这是nb就是新实例化的子弹,接下来就可以拿这个做一些其他操作了。
另外,个人觉得,不停的生成、销毁子弹,到一定的程度会引起js的GC(垃圾回收)操作,这个GC操作非常消耗性能,最终可能会影响游戏的体验(卡顿啥的),还是用对象池吧,这样可以避免频过多的触发GC操作。
用对象池要好点,方便管理子弹,也可以减少消耗。。
谢谢指导,我已经把NewHeavyBullets抓出来做成了prefab,然后再按钮上添加了prefab作为事件的对象。
对象池的话我也尝试过,但是因为没有java功底(我的java是边带孩子边看书学的……)所以结构上面弄不太清楚。
大致思路是对象池缓存子弹,然后通过按钮触发发射,子弹发射之后按照一定规则销毁是么?那么发射子弹这个操作还有将子弹重新加回到对象池是不是都可以通过按钮触发?如果要这么写的话是不是应该分开两个脚本写会好一点?
谢谢,这个我之前已经看过了,还没有太理解,做法什么的讲解的不是让我很能找到根本核心,因为我基础太差了…………嘿嘿
谢谢呀,我学习学习,是您自己写的么?有问题可以再请教您吗~~
大神……我看了代码,一头雾水……能看出是敌人的对象池,但是有一些字符看不啊太懂……里面的让子弹飞一会是啥意思……难道是子弹用enemy这个名字定义的类么……我有点消化不良了……
能否给我普及一下那两个let的作用,为什么是let,不是用runaction……我问的问题是不是太初级了……
额。。。这。。。你先新建一个工程,把里面的assets替换进去,运行看下效果!‘enemy.js’是对象池的脚本,让子弹飞一会儿,是在创建完这个子弹对象后,让它运动一段距离,这个你可以看下官网文档里面的动作,至于let 和 var 是javascript里面的,你上百度搜一下let 和var 的区别,你就晓得了,还有就是这个写法是es6的写法,额你也可以多少看看,反正区别不是很大,用习惯就好
大神,是这样的……我替换了ASSET之后是黑屏的……所以就看了代码
这个脚本里面没有按键触发shot和reload的部分……并且里面有随机移动什么的
这个demo不是根据你的代码写的,所以没有reload
原来是这样,触摸屏幕作为触发时间是么
大神,这次可以了,我得消化一阵……
大神您好:有几个句子还是没看懂,麻烦帮忙解释一下呗
1.这句括号里面的是什么作用呢?如果不这么写是不是还有其他写法
this.node.on(cc.Node.EventType.TOUCH_END, () => {
this.shot();
}, this);
2.括号里面的这几个在另外一个enemy的JS里面有定义,是不是通过这个 funtion()可以连到其他脚本里面的呢?不需要前面require么?
createEnemy: function (sf, pos, parentNode, initCB) {
教教我呗,谢谢大神
1:this.node.on(cc.Node.EventType.TOUCH_END, () => {
this.shot();
}, this);
2:this.node.on(’‘touchend’’,this.touchNode.bind(this),this);
touchNode(event){
this.shot();
},
enemy.js是对象池脚本,在创建对象的时候,从对象身上通过组件获得(ccc中的组件获取)
原来是这样,谢谢

