弾幕を作成していたのですが、行き詰ってしまったので質問させて頂きます。
ボスから射出された自機狙い弾(大弾)の周囲を、別の弾(小弾)が回っているような弾幕を考えています。
ですが、実行してから大体10個目以降の大弾に、小弾が付属しない失敗した大弾が混ざります。
何個目の大弾がうまくいかないのかは、実行する度に異なり、思ったような弾が作成できません。
宜しくお願い致します。
void boss_shot_bulletH015(){
int t = boss_shot.cnt;
int k;
static double x, y;
if(t % 120 == 0){
if((k=search_boss_shot())!=-1){//大弾の作成
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].angle = bossatan2();
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].col = 0;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].state = 0;
boss_shot.bullet[k].spd = 1;
boss_shot.bullet[k].eff_detail = 0;
boss_shot.bullet[k].rem_spd[0] = 1;
}
}
for(int i = 0; i < BOSS_BULLET_MAX; i++){
if(boss_shot.bullet[i].flag > 0){
if(boss_shot.bullet[i].state == 0){
x = boss_shot.bullet[i].x;//大弾のx座標を取得
y = boss_shot.bullet[i].y;//大弾のy座標を取得
if(boss_shot.bullet[i].rem_spd[0] == 1){
if((k=search_boss_shot())!=-1){//大弾の周りを回る小弾の作成
boss_shot.bullet[k].x = boss_shot.bullet[i].x;
boss_shot.bullet[k].y = boss_shot.bullet[i].y - 50;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].state = 1;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].knd = 4;
boss_shot.bullet[k].col = 1;
boss_shot.bullet[k].eff_detail = 1;
boss_shot.bullet[k].rem_spd[0] = 0;
boss_shot.bullet[k].angle = 0;
boss_shot.bullet[k].spd = 0;
}
boss_shot.bullet[i].rem_spd[0] = 10;
}
}
if(boss_shot.bullet[i].state == 1){//大弾の周りを回る小弾の制御
boss_shot.bullet[i].x = x + 50 * cos(PI2/120*t);
boss_shot.bullet[i].y = y + 50 * sin(PI2/120*t);
}
}
}
}