作ったつもりです。しかし八方ふさがりというか、
どうしても解決出来ないことが起きています。
どうかお助け下さい。
構造体
int x、y;\\座標
int No;\\オブジェクト判別数値
bool flg://発生フラグ
↑これを要素とした二次元配列「object配列」を作っています。
(一次元配列でもいいはずですが、他の処理の流用ということで二次元でやっております)
ステージは強制横スクロールのシューティングで
毎フレームのスクロール量が+0.6
左にスクロールしています。
考え方はシンプルで、その画面のスクロールに合わせ、
総スクロール量と、二次元配列の各要素内のオブジェクトのX座標を比較し、
今、画面の中に入っていると判断出来たオブジェクトをインスタンス化させる、といった感じです。
for(int i=0; i<m_line; i++){
for(int j=0; j<m_col; j++){
if(object配列[i][j].x - 総スクロール量 > 画面サイズ)
{continue;}//まだ必要ないobjectということでループ抜ける
if(object配列[i][j].birth_flg==false)//発生させていないobjectか?
{
発生処理 インスタンス化→割愛します
object配列[i][j].birth_flg=true;//発生
}
}
}
continueを使わず、if(object配列[j].x - 総スクロール量 < 画面サイズ)で
画面内に入ったら発生させる、も試しています。
で、肝心の質問なんですが、
実行後、最初は狙い通りうまくいってるんです。
設定した画面サイズ、仮で100とすると、スクロール量がX座標100を超えるまで
オブジェクトが発生しませんし、そのX座標100をラインとしてポンポン発生します。
で、成功してると思ったら、その発生するラインがどんどんどんどん先に行ってしまうんです。
結果、先の方にあるobjectが次々インスタンス化されてしまう。
毎フレームのスクロール量は+0.6で不変のはずなのに
なぜこのような事態になるのでしょうか????
もちろん、目視によるスクロールも一定で、異常はありません。
if(object配列[j].x - 総スクロール量 < 画面サイズ)
という式自体、なにか問題ありますか?