前回までにしっかりとモジュール作りをしておいたので、弾幕の追加が楽ですね。

今度は弾幕関数だけ変更すればいいです。

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


案外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++){//途中から2分裂する分
            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を渡しています。ミシャグジさま弾幕は1箇所から2つずつ弾が発射されており、

途中から2つの軌道がかわります。

そこで、0を指定した弾は角度が正の方向に変わり、1を指定した弾は逆・・としてみます。

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

これがその代入です。クエッションマークは条件演算子です。わからない方はググって下さい。

こうすることで、2種類の角度に分けることが出来ます。

/カウンタ 移動パターン 敵の種類 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




実行結果


- Remical Soft -