見出し画像

#1:GB Studioで2Dアクションを作る

お前ら! ゲームボーイは好きか!
私は好きです! なので作ります。

あらすじ

詳しくは以下の懺悔を読んで下さい。

ということで「GB Studioで2Dアクションを作る」スタートです。

前提:できることを知る

前回はトップダウン型のゲームだったので、今回制作する2Dプラットフォーマーはだいぶ仕様が異なってきます。なので企画はステージ設計を練る前に「GB Studioの2Dプラットフォーマーでは何が実現できるか」を調べたいと思います。

移動、ジャンプ

プレイヤーのスプライトを「Platformer Player」に設定すれば、基本的な動作ができるようになります。このあたりは他のソフトウェアだと細かく設定しないといけないので、とっかかりがいいですね。ボタンなど細かく変更したい場合は、設定メニューから変えられます。

壁、足場

ワールドメニューでシーンに当たり判定を設置して、壁や足場にします。GB Studioの特異的な部分で、マップを構成するタイルに個別で当たり判定を設定するのではなく、シーンそのものに当たり判定を配置します。

一見足場のように見えるものは、後から設置したものではなく背景と一緒に描かれてたものです。応用すると、見えない足場を簡単に作ることができるということでもあります。

赤い当たり判定は1マス(8px8px)分で設置可能。青い当たり判定はいわゆるすり抜け床で、上方向にのみ当たり判定があります。ただしデフォルトではすり抜け床にすることができません。

動く足場

シーンそのものに当たり判定を設置するということで、つまりデフォルトでは「動く足場」というものを作ることが出来ません。

正確に表現すると、足場をアクターで設置して上に乗ったら動くようにすることはできますが、当たり判定を同時に動かすことはおそらく難しいため、スプライトだけがスイーッと動いてしまいます。

これを解決するために「Platformer Plus」プラグインを導入しました。

導入方法は、DLした「plugin」フォルダをプロジェクトと同じ階層に置くだけです。これで設定項目に専用の項目が追加されます。

私もまだ試行錯誤しているので何が実現できるかは調査中ですが、

  • すり抜け床

  • 移動する足場

  • 壁ジャンプ(&壁に触れていると徐々にずり落ちる)

  • ジャンプの先行入力(1~20Fの可変)

  • 浮遊(というかふわふわ下降)

などが実装できると思います。色々試してみます。Githubにドキュメントがあるのでちゃんと翻訳したいですね。

押せるブロック

横に立って押すことで、移動させることができるブロック。

変!

コリジョングループを設定して、OnHitでプレイヤーから離れるイベントを設定すれば上記の挙動になりますが、押しているというよりは逃げられている感じ。「押してる感」がないです。

コリジョングループを設定するとOnIntaractではなくOnHitになるので「密着した状態でインタラクトすると1マス動く」という設定をするのは少々ややこしくなりそうです。

設定してみるとこんな感じ?

これでこういう挙動になります。

触れて後にインタラクトボタンで押せる

「密着した状態でさらにブロックの方向に移動しようとするとブロックが動く」としたい場合は……わかりません。左右キーを設定すればええんや! とするとブロックから離れようとしても動きます。

Platformer Plusを導入したことで、このあたりの問題も解決できそうな気がしていますが、もう少し調べたほうが良いと思うので頑張ります。

壊せるブロック

これを応用すれば、触れてインタラクトすることでブロックを消すことも可能です。このままだと唐突感がすごいので、ブロック破壊アニメーション再生も並行させると良さそうです。

関係ないですが、動く足場が「判定に触れただけ」で動いてしまっているので、これも「プレイヤーが上に乗ったら」という条件付けが必要ですね。

動く足場に乗ったら動くようにする

足場のイベントを以下のように設定してみました。

これで以下のような挙動になります。

上に乗ったときだけ動き出す

あとは「プレイヤーが足場から離れたら元の位置に戻ろうとする」という挙動も追加してみたいですが、On InItかOn Updateで設定すればいいのかな?

Not On Hitみたいな条件は難しそうなので、おそらくOn InItで常に初期位置に動こうとする、みたいなことをしないといけない? ただその場合うまく動かないかも? 初期位置を変数に格納しておいて……みたいなことが必要になるかもしれません。

長くなってきたので今日はここまで。

それではまた。

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