100日チャレンジ『100日で50弾!』第45回、シャッター・ストリームです。波の形にザーッと撃たれた弾がランダムな方向に飛び散り、1秒後にそれらがまたランダムな方向に向きを変えます。動画はこれ。
今、いわゆるUnity流(?)の設計でコードを書いています。例えばゲームオブジェクト(GameObject)を今までガンガン使っていましたが、新しい書き方では直に触るのは特定のクラスだけです。「うわっ、めんどくさ……!」と思いましたが、頑張っています。シューティングゲームでステージの進行を管理するのはStageManagerというクラス(例)です。このクラスは例えばEnamySpawnerというクラスの機能を使って各ステージで敵を生成します。StageManager内でも敵のゲームオブジェクトを直に触ることはでき、移動とか削除とかも自由です。が、これをやると「必ずあとで破綻する」(ChatGPT)のだそう。ま、分かります。コード全体のどこが何を操作しているのか、相当注意して書かないとごちゃごちゃになり、バグでも出たときにはいったいどこが原因なのか見つけるのが大変なのです。今までは何か起こったら「ここら辺か?」と怪しいラインを特定し、関係していそうなコードをプリントアウトして点検する、とやっていました。しかし新しいやり方、機能を増やすときにはその機能を持ったクラスを追加する方法なら、トラブルが起こっても「これと、このクラスのどちらかが原因だ」などとすぐ分かります。ようやく慣れてきて、モノになりそう……。
しかし、この設計上の問題でどうしたらいいか分からないことがあって、ここ数日いろいろ調べたりしており、「100日チャレンジ」が間に合わなくなってしまいました。うう……(涙)。「今、時間をかけておけばこの先は楽になる!」と考えて100チャレは後回し。一応解決したので取りあえず第45回を記事にしました。次回からはまた1日おきに!