今天是开发飞行射击游戏的第三天,唱片厂实现了子弹系统——玩家的子弹带多样性。成就效果:1.如何制造更多种类的子弹?使用ZD类中的类型索引id实现不同的子弹在ZD类中申请publicid:number;//子弹型索引构建this.id=id;开关(this.id){案例0:this.im=Main.createBitmapByName(“pzd2_1_png”);this.addChild(this.im);中断;案例1:this.im=Main.createBitmapByName(“pzd2_11_png”);this.addChild(this.im);}构建完成后,ZDManager类会报错,在create方法中添加Id属性,调用create方法时,只需添加子弹id即可。玩飞行射击的核心思想是玩家在躲子弹。二:动画帧子弹实现(blinkingbullet)闪烁是因为更新时坐标直线移动,实现了动画帧的切换循环。那么如何切换动画帧:需要一个定时器,随着定时器的变化,然后改变纹理,来回切换2张图片三次主循环第一张图片,三次主循环第二张图片循环,一次变化的周期是主循环的六倍。3张图片,一个循环就是六次。等等。update方法中if(this.id==2){this.t++;if(this.t>=6){//这个6就是帧数*帧时长。this.t=0;//图片会变,所以当t为0.1时,2除以3为0。几+3四舍五入为3,当t为3、4、5除以3为1。+3四舍五入为4//这样就导致了3和4之间的变化,图片名称为3和4this.im.texture=RES.getRes("pzd2_"+Math.floor(this.t/3+3)+"_png");}}this.t/3这个3是3个主要的Cycle到一帧,也就是帧时长。for(leti=0;i<10;i++){this.zm.create(2,this.player.x,this.player.y,15,Math.random()*360,this);}Math.random()*360,一个圆是360度数,Math.random()*360实现0~360度之间的子弹随机发射。三。多状态子弹的实现publicm:number;//子弹状态索引//导弹案例3:this.im=Main.createBitmapByName("pzd1_3_png");this.addChild(this.im);这个.t=0;这个.m=0;break;update()初始方法if(this.id==3){this.im.texture=RES.getRes("pzd1_"+Math.floor(Math.random()*2+3)+"_png");switch(this.m){//初始角度更新10次主循环case0:this.t++;这个.x+=这个.vx;这个.y+=这个.vy;如果(这个.t>=10){这个.t=0;这个.m=1;}休息;//发出case1后稍作停顿:这个.t++;如果(this.t>=5){this.t=0;这个.m=2;这个.vy=0;}休息;//向上加速情况2:this.y+=this.vy;这个.vy-=2;//这是一个独立的代码,所以需要检测弹幕消失if(this.y<-100)this.vis=false;休息;}返回;//跳出}因为是3和4,所以(Math.random()*2+3)(01)不包括1,那么*2就是(02之间的数)+3四舍五入到3~4返回;在一些特殊的代码中,if之后return,如果满足条件,后面的代码将不会执行4.增加播放器启动方法将MainGame中的update方法publicupdate()剪切到Player类中,添加fire方法//专用于发射子弹publicfire(){this.t++;//在主循环中每4次触发一次if(this.t%4==0){this.game.zm.create(1,this.x,this.y,20,0,this.game);}if(this.t>=15){this.game.zm.create(3,this.x,this.y,10,210,this.game);this.game.zm.create(3,this.x,this.y,10,150,this.game);这个.t=0;}}由于gif图片压缩,可能会有一些卡顿和失真,但实际效果不会卡顿。请原谅我。第三天的开发笔记已经完成。你需要坚持学习,坚持到最后,一定会有结果的。每天写笔记,记录自己的学习内容。以后有需要的可以去看看,大家一起学习。
