第三十三章 练习“之后就一个人都没有了吗?”风格的弹幕吧!(2)

>>点此回到教程目录

弹幕名:无 (“之后就一个人都没有了吗?”(「そして誰もいなくなるか?」)的样板)

制作难易度:★ (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。

由于还有固定放置的子弹,因此有必要调整一下。

>>点此回到教程目录

results matching ""

    No results matching ""