長き戦いで御座いました…cf2.5 ループ処理とオブジェクトの出現管理
くっ…!不覚でござったあ!!
ようやく、ようやく数時間をかけて、横スクロールアクションの、「敵オブジェクトの出現(行動開始)タイミングの管理」を実装出来ました。
どういう事かといいますと、
自立行動する敵オブジェクトをただ配置しただけだと、画面に表示されていない時でも勝手に行動してしまい、狙い通りのシチュエーションを作れないため、画像のようにスクロールして進んでいく中、画面表示領域に入った敵オブジェクトだけ行動を開始するようにしたかったわけです。
で、これを実現する為に必要な要素は何か?と考えた結果、
①foreachループと固定値による複数オブジェクトの個別管理
②画面表示領域に入っている事を認識させるフラグ
③表示領域に入っている時のみ動作を実行させる、という条件付け
この3つだろうなと。
その内①は前回記事をアップした時点でクリアしていたので、②③をどうすべきか試行錯誤していたのですが、最終的に次の形に落ち着きました。
このイベント形にたどり着くまでに約4時間くらい試行錯誤に費やしてしまいました…( ´_ゝ`)
当初は、敵オブジェクトを「発生」させる為のオブジェクトを複数設置して、発生オブジェクトがスクロール枠に触れたら敵オブジェクトが発生…という形にしたのですが、上手くはいったものの、何故か、
新たに発生させた敵オブジェクトだけが挙動が不安定になった
元からフレーム上に配置していたオブジェクトは問題ないのですが、後から誕生したオブジェクトだけが、画面外に出た際に消失したり、背景をすり抜けたりと、意味不明な挙動をするようになってしまいました…全く原因がつかめず。
で、この方法を諦め、元から配置している敵オブジェクトを画面外では停止させておき、画面内に入った時だけ、入った個体だけを動作させるという今のシステムに変更しました。
いやあ本当に「組む→バグる」「組みなおす→バグる」「また組みなおす→またバグる」→\(^o^)/
ゲームを作る、プログラムを作る事の難しさを改めて実感しました…
成功した時の達成感も格別です!
が、これでようやくステージデザインの基盤が出来たんではないでしょうか?
さあ進めていかねば…