見出し画像

PICO-8で遊ぼう(ビームを撃つ!編

ブルラビくんがビームを撃てるようにしてみます。

本日の教科書

下準備

ビーム撃った時のマズルフラッシュ(?)でピカッと反射したイメージを追加。
ただの白兎。

プレイヤーの情報をまとめる

いままではグローバル変数x, y, sなどにプレイヤー(PC)の情報をバラバラに入れていましたが、以前の記事のアイテム(ニンジン)と同様に一つのテーブル(PC)にまとめてみます。

プレイヤー部分の全コード。

PC用の情報をまとめただけでなくプレイヤー用にタブを切ってコードを集約させました。既にビームを撃つ処理も入っているので若干分かりにくいかも…。
今までのinput()とは処理を変え、キャラクターの移動や描画をそれぞれupdate_pc()draw_pc()として関数を切り出し、input()テーブルPCの数値の変更のみとしています。
機能・処理ごとに関数に分けて変更を加えやすくしています。

pc.dx, pc.dy という変数を導入しています。
input() で押された方向キーに応じて、pc.dx / pc.dyの値を設定します。update_pc()で、pc.dx/pc.dyの値に速さ(spd)を掛け合わせ、PCを移動させます。

ビーム!

ビーム部分の全コード。

ほぼ、前回の記事のパーティクルと同じ様な処理ですね。
パーティクルではランダムで決定する部分が多めでしたがビームではランダムな要素はなしです。
前述したPCのinput()内のZキーを押したタイミングでadd_beam()が呼ばれテーブルbeamsにビームが追加されます。
それをupdate_beam()で位置の更新、draw_beam()で描画をします(_update()_draw()で毎フレーム実行)。

メイン

メインの処理は基本的にPC、BEAMのそれぞれの処理を_update()_draw()で回してるだけです。BEAMの処理はテーブルbeamsに登録された量だけforeach()でループさせます。

実行画面

うーむ。
イマイチですがイエロービーム(?)が撃てました。
ほんとにただの白兎…。
次回は調整編です。もうちょっとかっこよくなるよ!

続く!

この記事が気に入ったらサポートをしてみませんか?