弾幕の作成について
Posted: 2011年9月06日(火) 13:55
弾幕の作成で行き詰ってしまったので、質問させて頂きます。
今、自機狙いの弾を、50フレームごとに、[0]、[1]、[2]・・・と打っていくとして、
自機狙いの[1]が発射された瞬間、発射済みの[0]の角度を[1]の角度と同じにし、
自機狙いの[2]が発射された瞬間、発射済みの[0]と[1]の角度を[2]の角度と同じにするような弾を作りたいのですが、どうにも上手く行きません
関数shotatan2は弾と自機との角度を返す関数です。
ご鞭撻のほど宜しくお願い致します。
今、自機狙いの弾を、50フレームごとに、[0]、[1]、[2]・・・と打っていくとして、
自機狙いの[1]が発射された瞬間、発射済みの[0]の角度を[1]の角度と同じにし、
自機狙いの[2]が発射された瞬間、発射済みの[0]と[1]の角度を[2]の角度と同じにするような弾を作りたいのですが、どうにも上手く行きません
関数shotatan2は弾と自機との角度を返す関数です。
ご鞭撻のほど宜しくお願い致します。
void boss_shot_bulletH005(){
#define TM005 50
int i,k,t=boss_shot.cnt%TM005; //t=0~49
int t2=boss_shot.cnt; //t=0~
int l;
if(t%50==0){//右上から射出。50カウント毎に自機狙いを射出。
for(i=0;i<1;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = 1;
boss_shot.bullet[k].x = FMX;
boss_shot.bullet[k].y = FY;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle = shotatan2(boss_shot.bullet[k].x, boss_shot.bullet[k].y);
boss_shot.bullet[k].flag = 2;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 2;
boss_shot.bullet[k].state = 0;
boss_shot.bullet[k].kaiten= 0;
}
}
}
if(t%50==0){
for(i=0;i<1;i++){//左上から射出。50カウント毎に自機狙いを射出。、今まで打った弾が、最新の弾の角度に全てなる
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = FX;
boss_shot.bullet[k].y = FY;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle = shotatan2(boss_shot.bullet[k].x, boss_shot.bullet[k].y);
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 2;
boss_shot.bullet[k].state = 1;
boss_shot.bullet[k].kaiten = 0;
l = shotatan2(boss_shot.bullet[k].x,boss_shot.bullet[k].y); //最新の自機狙いの角度を取得
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag>0){
if(t%50==0){//右上からの弾。今まで打った弾が全て自機狙いに変わる。
if(boss_shot.bullet[i].state==0){
boss_shot.bullet[i].angle = shotatan2(boss_shot.bullet[i].x, boss_shot.bullet[i].y);
}
if(boss_shot.bullet[i].state == 1){//左上からの弾。今まで打った弾の角度が、最新の自機狙いの角度に変わる。
boss_shot.bullet[i].angle = l;//多分ここがおかしい
}
}
if(boss_shot.bullet[i].cnt > 400){ //射出されてから400カウント経過したら、弾を消す
boss_shot.bullet[i].flag = 0;
}
}
}
}