PICO-8で遊ぼう(自分を中心に世界を動かす編
これまで作ってきた2Dシューティングゲームめいた何かをちゃんとしたゲームに仕上げてみたいと思います。
※面白いゲームになるかどうかは別の話です。
ブルラビくんを世界の中心にする
今までは固定画面でブルラビくんやスライムが動き回るような構造でしたが、それをブルラビくんを画面の中心に固定して、移動するたびに上下左右にスクロールするいわゆる2Dスクロールな構造に変更します。
2Dスクロールゲームに構造を変更するには、ブルラビくんの表示位置を中心に固定しつつ、スライムの表示位置はブルラビくんの仮想的な座標から相対的な距離を計算して…と、結構めんどくさいことになりそうですが、pico-8にはcamera()という超便利な関数が用意されています。
camera(x,y)
ブルラビくんとスライムの位置関係の変化から正常にスクロールしてるように見えますが背景が紺一色なのでイマイチわかりませんね…。
なので画面がスクロールしてるのがわかるような背景をつけてみましょう。
の前に、なんか動作が変
PICO-8では数値は32767.99までしか扱えません。
そのため、ビームとスライムの当たり判定で使われている関数distance()で馬鹿正直に三平方の定理で距離を計算している箇所でオーバーフローを起こしていると思われます。
関数distance()を三平方の定理から角度と高さから斜辺(距離)を求める方式に変更します。
スクロールする背景
上下左右に2画面分スクロールする背景を作ってみます。
大地っぽくする
さすがに緑一色では味気なさすぎるので、もうちょっと味付けしてみます。緑一色の大地に茶色、黄色、明るい緑色の点々をつけて大地っぽさをだしてみます。
要は上下左右4画面分(512x512)の座標にランダムに点を打つテーブル(map_tiles)を用意すれば良いだけではありますが、さすがにその座標分のテーブルは量が多すぎるので8で割って、原点0,0を中心とした-32〜+32までの64x64のタイル状のテーブルとしてデータを用意します。
draw_map()でマップを描画する際も背景テーブル(map_tiles)から実際に描画する領域分のデータをブルラビくんの現在の座標から抽出して描画しています。
スプライトに置き換える
点描だけではまだまだ地味なので草花っぽいスプライトを描いて点描をそれに置き換えてみます。
以上!
この記事が気に入ったらサポートをしてみませんか?