現在弾幕をいくつか作成しておりまして、おおまかに理解することが出来ました。
そこでひとつ疑問に思ったんですが、各段幕を組合わせるにはどうすればよいのでしょう。
たとえば、
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座標の移動量 }
