ページ 11

シューティングゲームの館21~

Posted: 2007年3月28日(水) 23:33
by はね
はじめまして。
いつも参考にさせていただいております。
さっそく質問なのですが、21からの色々な敵の弾を表示する所で質問です。
void EnemyShotPattern*(int i)の関数を作成する所です。

これを実行すると敵の出す弾がうまく表示されません。
どうやら弾幕を出しても、一番先頭の弾が画面外に行くと表示されている弾全てが消えてしまうようです。

自分なりに色々と試行錯誤してみたものの、上手くいきません。

ご教授お願います。

Re:シューティングゲームの館21~

Posted: 2007年3月29日(木) 02:05
by 管理人
いつか誰かに突っ込まれるだろうなと思っていましたが、やはりご指摘受けました^^;
http://dixq.net/s/31.html
この辺のショットとかですよね。

このシューティングプログラムは程度画面外に出ると発射フラグを落とすようにプログラムしてあります。
フラグを落とすまでのカウンタを用意するべきでしょうが、とにかく「プログラムを複雑化したくない」という事でこのような書き方にしています。

一度ある程度距離の有る画面外に出ると発射フラグが0になってしまいます。

enemy_shot.cpp

に 
 
//弾が画面より外にあるときは発射フラグを戻す。
if(EnemyShot.EnemyShots[j].x<-20.0||EnemyShot.EnemyShots[j].x>440.0||EnemyShot.EnemyShots[j].y<-20.0||EnemyShot.EnemyShots[j].y>500)
 
 
とありますが、これがその処理です。
例えばx座標が-20以下になるとフラグが落ちます。これに余裕を持たせれば玉が消える現象が軽減できるでしょう。
おもいっきり画面外にわざと出るようなタイプの弾幕はフラグを落とすまでのカウンタを用意するべきでしょう。
とりあえずこのフラグの有効範囲を広くする事で対処できるのではないでしょうか。

Re:シューティングゲームの館21~

Posted: 2007年3月29日(木) 15:43
by はね
素早い返答ありがとうございます^^

おっしゃる通り、弾が消える判定をカウンターに任せたら上手くできました。
まだまだ初心者ですが、今後もよろしくお願いします

Re:シューティングゲームの館21~

Posted: 2007年3月29日(木) 16:14
by 管理人
解決もお早いですね☆
頑張ってください^^