現在弾幕をいくつか作成しておりまして、おおまかに理解することが出来ました。
そこでひとつ疑問に思ったんですが、各段幕を組合わせるにはどうすればよいのでしょう。
たとえば、
void EnemyShotPattern3(){
for(int j=0;j<10;j++){//計10発撃つ
if(EnemyShot.counter==20*j){
EnemyShot.EnemyShots[j].flag=1;
EnemyShot.EnemyShots[j].x=EnemyShot.mem_ex;//敵の現在のx座標を記憶
EnemyShot.EnemyShots[j].y=EnemyShot.mem_ey;//敵の現在のy座標を記憶
EnemyShot.Angle[j]=atan2(EnemyShot.mem_py -EnemyShot.mem_ey ,EnemyShot.mem_px - EnemyShot.mem_ex);//角度を習得
}
}
EnemyShot.EnemyShots[j].x += 1*cos(EnemyShot.Angle[j]);//cosがx座標の移動数値
EnemyShot.EnemyShots[j].y += 1*sin(EnemyShot.Angle[j]);//sinがy座標の移動数値
}
上記のような弾幕は敵座標と自座標の座標位置を求め、atan2関数で角度を導出し、
sin,cosに当てはめることで弾のx,yの移動量を加えています。
この弾幕が終了した後、まったく同じ弾幕をうたせようとしました。
正直同じ関数を使い廻せばいいだけの話ですが、今後の発展のため、EnemyShotPattern3関数のみで
実装したいです。
自分なりに考えてみたのは以下のコードです。
しかしながら、後者がおそらく反応していません。
問題点、もしくは手法など教授お願いします。
void EnemyShotPattern3(){
for(int j=0;j<10;j++){//計10発撃つ
if(EnemyShot.counter==20*j){
EnemyShot.EnemyShots[j].flag=1;
EnemyShot.EnemyShots[j].x=EnemyShot.mem_ex;//敵の現在のx座標を記憶
EnemyShot.EnemyShots[j].y=EnemyShot.mem_ey;//敵の現在のy座標を記憶
EnemyShot.Angle[j]=atan2(EnemyShot.mem_py - EnemyShot.mem_ey ,EnemyShot.mem_px - EnemyShot.mem_ex);//角度を習得
}
}
for(j=10;j<20;j++){
if(EnemyShot.counter==20*j){
EnemyShot.EnemyShots[j].flag=1;
EnemyShot.EnemyShots[j].x=EnemyShot.mem_ex;//敵の現在のx座標を記憶
EnemyShot.EnemyShots[j].y=EnemyShot.mem_ey;//敵の現在のy座標を記憶
EnemyShot.Angle[j]=atan2(EnemyShot.mem_py -EnemyShot.mem_ey ,EnemyShot.mem_px - EnemyShot.mem_ex);//角度を習得
}
}
EnemyShot.EnemyShots[j].x += 1*cos(EnemyShot.Angle[j]);//x座標の移動量
EnemyShot.EnemyShots[j].y += 1*sin(EnemyShot.Angle[j]);//y座標の移動量
} 