ページ 11

無題

Posted: 2007年5月13日(日) 20:33
by aniy
初歩的な質問かと思いますが、サンプルのシューティングゲームプログラムにて、敵が連射弾を発射中に敵を倒すと敵が画面から消えているのに弾だけは発射され続けています。
その現象を改善するために色々とプログラムをいじってみたのですが、なかなかうまく動いてくれません。

例えば ショットパターン2にて、敵が4発目を撃った後に撃破したら5発目以降の弾を描画させたくない

という事を正常に動かすためには、ショットパターン2の関数の中で、for(int j=0;j<10;j++)
の次に敵がまだ表示中か判定して、表示中ならば以下のif(EnemyShot.counter==20*j) に進む。
表示中でないならばfor(int j=0;j<10;j++) のfor文を抜ける
という処理にすればいいのだと考えているのですがうまくいきません。

他にもやり方を色々考えてみたのですが、うまくいくような処理が思いつきませんでした。
書きたいことがうまく書けずにこのような文章になってしまいましたが、良い方法がありましたらご助言をお願いいたします。

Re:無題

Posted: 2007年5月13日(日) 21:52
by Justy
という処理にすればいいのだと考えているのですがうまくいきません

 for分を抜けてはだめなんじゃないでしょうか?
 それだと発射済みのものまで処理がスキップされてしまいそうなので、
敵が倒されていたら初期化だけをスキップする、ようにすればいいかと思います。


 例えばショットパターン2だったら
[color=#d0d0ff" face="arial">    if(EnemyShot.counter==20*j){[/color]
[color=#d0d0ff" face="aria[/url]    if(enemy.flag && EnemyShot.counter==20*j){[/color]

にするとか。

Re:無題

Posted: 2007年5月14日(月) 21:35
by aniy
アドバイス通りに実行してみたところ、正常に動くようになりました。
Justyさんありがとうございました。

また質問させていただくと思いますが、よろしくお願いします。