弾幕名:なし (早苗風☆弾のサンプル)
作製難易度:★★★★ (4/10)
実行結果
---- boss_shotH.cpp に以下を追加 ---- //☆弾 void boss_shot_bulletH005(){ #define TM005 820 #define RANGE005 100.0 #define LEM005 4 int i,j,k,n,t=boss_shot.cnt%TM005,t2=boss_shot.cnt; static int sst,bnum; static double sx,sy,sangle; //1周期の最初なら if(t==0){ sst=0; sx=boss.x; sy=boss.y-RANGE005; sangle=PI/5/2+PI/2; bnum=0; } //星を描く if(sst<=4){ for(i=0;i<2;i++){ sx+=cos(sangle)*LEM005;//座標を計算 sy+=sin(sangle)*LEM005; //円と交わったら if((sx-boss.x)*(sx-boss.x)+(sy-boss.y)*(sy-boss.y)>RANGE005*RANGE005){ sangle-=(PI-PI/5);//方向転換 sst++;//ステータス変換 if(sst==5)break;//5なら終わる } for(j=0;j<5;j++){//星を5つ描く if((k=search_boss_shot())!=-1){ boss_shot.bullet[k].flag=1; boss_shot.bullet[k].state=j; boss_shot.bullet[k].cnt=0; boss_shot.bullet[k].spd=0; boss_shot.bullet[k].knd=10; boss_shot.bullet[k].col=j; boss_shot.bullet[k].angle=-PI/2+PI2/5*j; boss_shot.bullet[k].x=sx; boss_shot.bullet[k].y=sy; boss_shot.bullet[k].vx = cos(sangle)*1.4*1.2; boss_shot.bullet[k].vy = sin(sangle)*1.4; boss_shot.bullet[k].base_angle[0]=sangle-PI+PI/20*bnum; } } bnum++; } se_flag[0]=1; } for(i=0;i<BOSS_BULLET_MAX;i++){ if(boss_shot.bullet[i].flag>0){ int cnt=boss_shot.bullet[i].cnt; //ステータスが10未満なら if(boss_shot.bullet[i].state<10){ if(t==150){//150なら星を5方向に発射 boss_shot.bullet[i].spd=4;//スピード boss_shot.bullet[i].cnt=0;//カウンタリセット boss_shot.bullet[i].state+=10;//ステータス番号変更 } } else if(boss_shot.bullet[i].state<20){//10~19なら if(cnt<=80){//減速 boss_shot.bullet[i].spd-=0.05; } if(cnt==100){//セットした基準角度から綺麗な曲線を描く boss_shot.bullet[i].angle=boss_shot.bullet[i].base_angle[0]; } if(cnt>=100 && cnt<160){//加速 boss_shot.bullet[i].spd+=0.015; } } } } }
変更されているfunc.hも確認しておいて下さい。
ただしこれは
全く動かない場所が安置
と言う凄まじい問題を抱えていますから、角度は適当に乱数で調整して下さい。
- Remical Soft -