アフィリエイト広告を利用しています
 

2023年07月03日

Laboratoryテーマ9「32方向弾」その@




さて、今回はLaboratoryテーマ9「32方向弾」です。
「あれ? 3DダンジョンRPGが終わった後じゃなかったっけ?」と思われた方、正解。
実は私のMSX仲間(プログラマーに非ず)から久しぶりに連絡があって、「先日の16方向弾の動画面白かった! 32方向弾やって!」と、要請されました。
思わぬYouTube効果に驚き。
というか、貴方プログラミングしないでしょう?
経緯を説明し、「3DダンジョンRPGが終わってからね。」と説明するも、「誰も見てないブログだろ?」と言われ、ショックのあまり了承してしまいました…。
まぁ確かに、反応があった方を優先したいですが…。

一応、「32方向弾は自機・敵含めSPRITE同時表示32枚以上だから、せめてLaboratoryテーマ8「32枚を超えてSPRITEを表示させたい(非走査線割込)」の後で。」と抵抗はしましたが、「誰も見てないブログだろ?」とダメ出しされ、観念しました…。

余りにも唐突だったので、サンプルプログラム何も手を付けていないので、今回は考え方のみ。
そう、前回書いた「なんちゃって弾道計算」です。(2023年6月7日記事参照「しまった」)

いくらマシン語とは言え、32回も同時に三角関数を使った弾道計算するとなると、さすがに重くなります。(やった事ないから真偽不明ですが…。)
Laboratoryテーマ6「自機に向かって飛んでくる敵弾」は、自機と敵の位置が常に不定の為、計算して算出するしかないのですが、32方向弾は飛んでいく方向と速度は決まってるんです。
という事は、事前に移動量と方向をデータベース化しておけば、わざわざ時間のかかる計算をしなくてもいいのです!

因みに、32方向弾は一弾当たりの角度が、360°÷32方向=11.25°となります。
角度に対応した長さを事前に三角関数で計算しておきます。
データ容量は、32方向のX・Y移動量なので、32方向×2(X・Y)=64byteで済みます。
7_3_1.png
ここで、察しの良い方は気付かれたと思いますが、符号の変化と、X・Y移動量が逆転しているだけで90°ずつ同じ値なのです。
この符号は、Laboratoryテーマ6「自機に向かって飛んでくる敵弾」の時の4つにエリア分けした符号と同じです。
それらを利用して実際に用意するデータは64byte÷4エリア=16byte分用意し、32弾÷4エリア=8弾毎に値とエリアをセットしてやれば良いのです。
7_3_2.png
と、言う訳で「なんちゃって弾道計算」は、データベースを読んで弾のX・Y移動量と、エリアをセットするロジックとなります。
弾道計算と言いながら、計算すらしないロジックです。
それでも、これだと非常に早いし、ロジックも簡単です。

次回サンプルを用意します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory
検索
<< 2023年07月 >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード