>>点此回到教程目录
弹幕名:无 (“之后就一个人都没有了吗?”(「そして誰もいなくなるか?」)的样板)
制作难易度:★ (1/10)
运行结果
第七回弹幕制作讲座是以练习为目的的弹幕。
在前面的章节中我们已经完成了“然后都不见了?”那样从四面八方逼过来的子弹了呢。
在前面我们从1个固定的地方只发射1发子弹,而现在我们从一个固定的地方发射两发子弹。
和前面的工程相比基本没什么改变。
变更了的地方用红字标识出来。
—-在 boss_shotH.cpp 中进行以下追加 —-
//从四面八方直线发射 void boss_shot_bulletH007(){ #define TM007 300 #define DNUMX 9 int i,j,k,s,t=boss_shot.cnt%TM007,t2=boss_shot.cnt; double xlen=FMX/DNUMX;//要在画面上横向放置DNUM个子弹需要xlen的间隔 int dnumy=FMY/xlen;/以xlen为间隔的话再竖直方向需要多少个子弹 int cnum; if(dnumy==0){printfDx("boss_shot_bulletH006除以0\n"); return ;} double ylen=FMY/dnumy;//需要ylen的放置区间 double x,y,angle; static int num; if(t2==0)num=0; if(t==0){ x=0,y=0,angle=0,cnum=0; /***修改请注意***/ for(j=0;j<4;j++){ /***修改请注意***/ int to=j%2 ? dnumy: DNUMX ; for(i=0;i<=to;i++){ for(s=0;s<2;s++){ if((k=search_boss_shot())!=-1){ boss_shot.bullet[k].x = x;//坐标 boss_shot.bullet[k].y = y; boss_shot.bullet[k].knd = 4;//子弹种类 boss_shot.bullet[k].flag = 1; boss_shot.bullet[k].cnt = 0; switch(num){ /***修改请注意***/ case 0://直线 boss_shot.bullet[k].col = 0;//子弹颜色 boss_shot.bullet[k].angle = angle+PI/2;//角度 boss_shot.bullet[k].spd = 1.1+0.5*s;//速度 boss_shot.bullet[k].state = 0;//状态 break; case 1://斜向交叉 boss_shot.bullet[k].col = 3;//子弹的颜色 boss_shot.bullet[k].angle = angle+PI/2-PI/14+PI/7*s;//角度 boss_shot.bullet[k].spd = 1.3;//速度 boss_shot.bullet[k].state = 1;//状态 break; /***修改请注意***/ } se_flag[0]=1; cnum++; } } x+=cos(angle)*xlen; y+=sin(angle)*ylen; } angle+=PI/2; } } if(t==TM006-1) num=(++num)%2; }
也请确认变更了的func.h。
由于还有固定放置的子弹,因此有必要调整一下。