第十六章 来制作诹访子大人的弹幕吧

>>点此回到教程目录

在前面的章节中,我们已经完善好了我们的模块,因此下面弹幕的追加将会很轻松。

现在我们只需要修改弹幕函数就行了。

我们用shot_bullet_H008来实现诹访子大人的弹幕吧。

诹访子大人的弹幕是东方风神录EX的最后一个弹幕。如果不是很清楚请在视频中确认一下。

http://www.nicovideo.jp/search/%E3%83%9F%E3%82%B7%E3%83%A3%E3%82%B0%E3%82%B8%E3%81%95%E3%81%BE?sort=v

注:这是niconico的网站,国内可能进不去,我也没办法扒下来,想看的只能搭梯子了……

出人意外的是,EX的最后一个弹幕非常简单地就实现出来了……听到这种说法不少东方厨得烧我了吧,但是确实是很简单地就做出了非常相似的弹幕。

—-在 shotH.cpp中进行以下追加 —-

//诹访子大人
void shot_bullet_H008(int n){
    int t=shot[n].cnt;
    int k;
    if(t>=0 && t<1200 && t%90==0){
        double angle=rang(PI);
        for(int j=0;j<2;j++){//中途的时候就分裂为两部分
            for(int i=0;i<60;i++){//一次60个
                if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
                    shot[n].bullet[k].knd    =8;//第8号子弹
                    shot[n].bullet[k].angle  =angle+PI2/60*i;//60个圆
                    shot[n].bullet[k].flag   =1;
                    shot[n].bullet[k].x      =enemy[shot[n].num].x;
                    shot[n].bullet[k].y      =enemy[shot[n].num].y;
                    shot[n].bullet[k].col    =4;//第4号颜色
                    shot[n].bullet[k].cnt    =0;
                    shot[n].bullet[k].state  =j;//状态。0或者是1表示不同旋转。
                    shot[n].bullet[k].spd    =2;
                }
            }
        }
        se_flag[0]=1;//播放发射音效
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//所有子弹的循环
        if(shot[n].bullet[i].flag>0){//如果有登录了的子弹
            int state=shot[n].bullet[i].state;
            int cnt=shot[n].bullet[i].cnt;
            if(30<cnt && cnt<120){//如果是30~120次计数
                shot[n].bullet[i].spd-=1.2/90.0;//90次计数总共减去1.2
                shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);//90次计数总共倾斜90°
            }
        }
    }
}

请保证子弹的编号和bullet文件中的子弹的编号是一样的。

(b8.png)

从最左边开始为0号,由于淡蓝色的编号为1,因此指定颜色为1.

在这里我们让state为0或者1。由于诹访子大人的弹幕是从一个地方开始两个两个地发射,因此中途开始我们就要变成两个轨道。

因此,我们试着让指定为0的子弹角度顺时针旋转,而指定为1的子弹角度为逆时针旋转。

shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);

这就是state的代入。问号用来表示三元表达式。如果不清楚的请谷歌一下。

这样以来,我们就可以分成两种角度了。

计数器 移动模式 敌人的种类 x坐标 y坐标 速度 发射时间 弹幕种类 子弹的颜色 体力 子弹的种类 待机时间 物品1 2 3 4 5 6
cnt pattern knd x y sp bltime blknd col hp blknd2 wait item_n
60 9 0 200 150 0 60 8 1 100 0 1200 0 -1 -1 -1 -1 -1

运行结果


>>点此回到教程目录

results matching ""

    No results matching ""