



![]()
弾幕名:なし (早苗風☆弾のサンプル)
作製難易度:★★★★ (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 -