100日チャレンジ『100日で50弾!』第42回、電磁柵3です。考えればまだまだ工夫の余地はあるけれど、一応これで電磁柵は完成です。弾が作る4面体(辺あり、面も半透明に色を付ける)の辺上を白い光点が移動します。SFアニメなどでこういうの、あります。シールドではないけれど映画『天空の城ラピュタ』で立体の辺上を光る点がスーッと移動する場面があったと思います。とりあえず動画をどうぞ。
今、新しくシューティングゲームを書き始めています。100日チャレンジで考えた弾を撃つようにしてみたいです。100チャレの過程で結構ChatGPTにいろいろ問い合わせをするようになりました。「xxがxxxxになるような弾、何か考えて」とか「xxxを実現するにはどうすればいい?」とか。人間ひとりの発想では限度がありますから、そういう面でありがたいです。
ChatGPTが「こうすればできる」と教えてくれても、そのままではうまくいかないことがあります(決して少なくない)。何度も問い合わせないといけないし、それにそもそも、自分が書いているコードのどこにどんな感じに組み込めばいいのかも考えなければなりません。こうして大変なこともあるけれど、それでも素晴らしいです。
もうひとつ、こちらが重要なんですが、いわゆる(と言っていいか分かりませんが)Unity流の設計を勉強できています。シューティングゲームを1本書き終える頃にはある程度慣れているのでは……と思っています。ぼくは今まで、機能を確実に実現できればそれでよい、という感じに書いていました。実際それでゲームを何本か書いていますし、そういう意味では問題ないんですが、限界を感じていたのも確かです。どういうことかというと……これ以上大きなプログラムを書こうとすると自分で把握しきれなくなって、特に機能の追加、修正、デバッグなど無理になるんだろうな……という気がしていたのです。開き直って「破綻する前に書き終えればよい!」くらいのことも考えていました。そうしたところへUnityの「1機能で1クラス」という新しい波が! (←伝わらなかったら済みませんが)確かにプログラムは機能別に短く書けば見通しもよくなります。まだ慣れていませんが、徐々に身についているのが分かります。……というわけで、簡単なシューティングゲームを書き上げてみます。自分で書いたコードのどこが何をしているのか、分かりやすくて驚いています。
自分で書いたものが分からない、というのがプログラムを書いたことのない人には理解できないかも知れません。でもこれは日常茶飯事です。昨日書いた内容がもう「これ、何だっけ?」となっていることだってしばしばです。自分で考えたことなのに2週間前だともはや何の記憶も残っていません。この辺もかなりマシになりそうで、期待しています。
で、結論。100日チャレンジ、気づくことが多くてよかったです。