龍神録プログラミングの館の16章「ミシャグジさま弾幕を作ってみよう」で作った弾幕を
ボスも扱えるようにしようと、boss_shotH.cppに同じ内容を書き、そこから変数(?)などを書き換えて、
void boss_shot_bulletH039() { int t=boss_shot.cnt; int k=1; if(t<1000 && t%200==0){ double angle=rang(PI); for(int j=0;j<2;j++){//途中から2分裂する分 for(int i=0;i<60;i++){//一度に60個 if(boss_shot.bullet[k].flag!=2 && (k=search_boss_shot())!=-1){ boss_shot.bullet[k].knd =8;//8番の弾 boss_shot.bullet[k].angle =angle+PI2/60*i;//円形60個 boss_shot.bullet[k].flag =1; boss_shot.bullet[k].x =boss.x; boss_shot.bullet[k].y =boss.y; boss_shot.bullet[k].col =4;//4番の色 boss_shot.bullet[k].cnt =0; boss_shot.bullet[k].state =j;//ステータス。0か1かで回転がかわる boss_shot.bullet[k].spd =2; if(j==1){ boss_shot.bullet[k].col =0;//見やすくするため } } } } se_flag[0]=1;//発射音鳴らす } for(int i=0;i<SHOT_BULLET_MAX;i++){//全弾分 if(boss_shot.bullet[k].flag>0){//登録されている弾があれば int state=boss_shot.bullet.state; int cnt=boss_shot.bullet.cnt; if(30<cnt && cnt<120){//30~120カウントなら boss_shot.bullet.spd-=1.2/90.0;//90カウントかけて1.2減らす boss_shot.bullet.angle+=(PI/2)/90.0*(state?-1:1);//90カウントかけて90°傾ける } } } }
見やすくするために色を変えていたり、多少違います
これで実行してみると、後から発射された弾が、先に発射された弾を追い越してしまいます。
その弾は
・角度が変わるまで時間が掛かる。(追い越した後に角度が変わりだす)
・スピードが速い(追い越した後、角度が変わると共にスピードが落ちだす)
・このように動きが違う弾はランダムに飛んでくる。(10回中2回の時もあれば、1回の時もありました)
ここから考えて、恐らく
if(30<cnt && cnt<120){
ここに当てはまらないため、しばらくの間、スピードも落ちなければ、角度も変わらないのだと思いました。
今したいことは、追い越すような事をなくしたいということです。
どのように書き換えればいいのでしょうか?
分かりにくい場所がありましたら、指摘お願いします。
Cの知識は、初心者レベルです。
ご教授宜しくお願いします。
