現在ボス弾幕を作っている最中なのですが、思い通りに動いてくれない弾幕があり困っています。
その弾幕(2つあります)のソースとどこが思い通りに動いてくれないのかを、以下に載せておきます。
また、弾幕作成には、支館様の弾幕簡略化関数を使用しているのですが、新しい引数を最後に加えています。
これは、boss_shot.bullet.eff_detailです。
年末年始でいそがしい所申し訳ないのですが、不具合の原因が分かる方がいましたら、アドバイスよろしくお願いします。
・一つ目
void boss_shot_bulletH017(){ int i,k,t = boss_shot.cnt; double LX=FMX/2-boss.x+FMX/2; if(t>20&&t%200==100){ move_boss_pos(40,90,FMX-40,110,80, 100); } if(t>140 && t%2 ==0) bullet_way(boss.x,boss.y,2 ,(0.03+rang(0.002))*t,PI ,3,4,4,0,0);//←この弾幕です if(t>100 && t%15==0) bullet_way(boss.x,boss.y,25,PI2/25+PI2/50 ,PI2/25,5,8,0,1,0); for(i=0 ; i < BOSS_BULLET_MAX; i++){ if(boss_shot.bullet.flag>0){ if(boss_shot.bullet.state==1){ if(boss_shot.bullet.cnt>=0 && boss_shot.bullet.cnt<21){ boss_shot.bullet.spd-=0.15; } } } } }
少しばらけ気味の2way弾を撃たせようと思い、角度を
(0.03+rang(0.002))*t
と設定したのですが、これがどうもいけないらしく、徐々にばらけ方が大きくなり、最終的にはばらまき弾
になってしまいます。
どのように角度を設定してやれば、一定のばらけ方のまま2way弾を撃たせられるのでしょうか。
・二つ目
void boss_shot_bulletH024(){ int i,k,t=boss_shot.cnt; if(t%200==100)input_phy_pos(ch.x,40+rang(30),60); if(t%200==160)bullet_way(boss.x,boss.y,1,PI/2,0,2,4,3,0,1); for(i=0 ; i < BOSS_BULLET_MAX; i++){ if(boss_shot.bullet.flag>0){ if(boss_shot.bullet.state==0){ boss_shot.bullet.eff_detail2=1;//前スレで質問させていただいた弾の残像エフェクトです。 if(t%200==180){ bullet_way(boss_shot.bullet.x,boss_shot.bullet.y,35,bossatan2(),PI2/35,8,1,4,1,1);//この弾幕をかべにあたったら反射するようにしたいと思っているのですが・・・ boss_shot.bullet[i].reb_flag=0; } if(boss_shot.bullet[i].cnt>0) boss_shot.bullet[i].spd+=0.3; } if(boss_shot.bullet[i].state==1){ if(boss_shot.bullet[i].cnt<40){ boss_shot.bullet[i].spd-=0.15; } if(boss_shot.bullet[i].reb_flag==0){ if(boss_shot.bullet[i].x<3 || boss_shot.bullet[i].x >FMX-3 ){ boss_shot.bullet[i].angle=PI-boss_shot.bullet[i].angle; boss_shot.bullet[i].reb_flag=1;//反射するかどうかのフラグ。 } if(boss_shot.bullet[i].y<3 ){ boss_shot.bullet[i].angle=PI2-boss_shot.bullet[i].angle; boss_shot.bullet[i].reb_flag=1; } } } } } }
円形に発射された弾が一度だけ反射するようにしたいのですが、
2回目の円形発射では一部が反射せず、
3回目からは弾が反射しません
どこが問題なのでしょうか・・
