見出し画像

PICO-8で遊ぼう(ビームを当てる編

先日、海外の方から記事読んでるぜ!的なツイートをいただきました。
一応書くたびにTwitterに流しているものの、誰も読んでるわけないだろと思っていたのですが、まさか海外の方から反応いただけるとは予想外でした。
わざわざ日本語の記事を読んでくれるなんて…と思いましたが、技術的な記事なら私も海外のものでも見にいく(英語は分かんないけどプログラム言語は読める)ので同じ様な感覚なのでしょうか??

今回はビームにNPCを倒す処理を追加して、シューティング・ゲームっぽい何かに仕立てます。

本日の教科書

ビームが画面外に出たら削除

オーバーフロー対策として、update_beam()にビームが画面外に出たらテーブルbeamsから削除する処理を追加します。

ビームとNPCの衝突判定

スライム(NPC)同士が重ならないようする処理avoidance_npc()でも使った衝突判定collision()を使ってビームとNPCの衝突判定処理hit_npc()を作ります。

座標x, y、半径rの円とぶつかるNPCがあればそのNPCの変数を返す。
見つからなければnil(空)を返す。

この関数hit_npc()update_beam()の中に組み込みます。

ビームが衝突したNPCが見つかったら、そのNPCをnpcs 配列から削除。
ビームもbeamsから削除。
ブルラビくんに当たり判定がない(無敵)ので一方的な虐殺が可能。

飛び散るスライム!

撃たれてただ消えるだけでは味気ないので、以前作った打ち上げ花火のデモからパーティクル(particle)の処理も持ってきてスライムが撃たれたら破片(?)が飛び散るような演出をつけてみます。

打ち上げ花火のデモで作ったパーティクルの処理を整理して移植。
add_ptcl():テーブルptclsにパーティクル追加
update_ptcl():パーティクルの更新
draw_ptcl():パーティクルの描画
update_beam()のビームとNPCの衝突判定のところでパーティクル追加処理を追加。
メイン処理の_update()_draw()にそれぞれupdate_ptcl()draw_ptcl()を追加。
火花(?)散らすスライムたち

パーティクルの演出

もう少し、っぽくしたいので演出を加えます。
まずはビームの当たる向きに合わせてパーティクルが飛び散るようにしてみます。

add_ptcl()dx,dyを追加。
update_beam()でパーティクルを加える際に、b.dx,b.dy(ビームの飛んでいく方向)を加えることでパーティクルもその向きに飛んでいく。
弾丸(ビームだけど)で弾け飛ぶぜ!

パーティクルの色を変える

黄色のパーティクルでも火花が弾け飛んでる感があっていいのですが、スライムの肉片(?)が弾ける感じにしたいのでパーティクルの色がスライムの色に合わせて変わるようにします。

スライムの肉の色(c.c)を持ってきて(col)パーティクルの色情報に加える。
弾けるスライムの肉片!

以上!

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