縦スクロールシューティング05

八方向移動

最近はブラウザ用のフラッシュゲームなんかだとシューティングもマウスで自機操作をするものがありますが、一般的なシューティングゲームに必要なプレイヤーコントロールが「8方向」です。一旦深く考えることを止めて、アクティブのプロパティを開いたら「動作タブ」から「8方向」を選びます。MMF2の良いところは、ラピッドに作るためのある程度の動作は標準動作の内に入っている点です。

多少難点を抱えている動作もありますが、とりあえず動作を当てはめてその他のオブジェクトの動きや関係を見たい場合や、ロジックを先に点検したい時などこの標準動作は頼りになります。筆者も普段作り始めは標準動作でまず動きを当てはめてみて、作りこんでいく過程で必要になったら自作の動作に切り替えて使っています。

標準動作の8方向を使っていて問題だと感じる点はどこでしょうか。それはたぶんコリジョンを検出する時まで問題点には気が付かないかもしれません。筆者の場合、MMF2を使っていてこれは自作の動作を作る必要があるなと感じるときは大体そんなときです。標準動作の仕様をすべて完璧に覚えるよりも、自分で作ったほうが速いかも、と。

標準動作の八方向に問題があるというよりも個人の開発者はだいたい我侭なものなので、自分の考えた8方向動作と違う挙動をするとこれは駄目だと結論を出します。でもオーダーメイドと既製品の違いだからこれは仕方ないです。そしてその場合MMF2は自分のゲーム仕様に合わせて自分で動作を一から作ることができる自由度を持っているツールです。

「8方向動作」の自作

自作する動作としては斜め移動をしない「4方向」が一番作るのは楽なのですが、コリジョンを考えなければ8方向も作るのは楽です。あるいは一般的なシューティングだったら今回の「魔城伝説」みたいに頻繁に障害物との衝突を検知しないといけない仕様になってないかもしれないのでClickTeamがつけてくれた標準動作の「8方向」で事足りる気もします。

サンプルの列挙

作者:Bigfoot

http://www.bigfootandet.com
fastloop topdown movement example
★確認用:Java
topdownFaslooptmovement

topdown Fasloop movement★確認用:Java出力

作者:不明(2011/05/20(金) ID:Yo1uFggO)Multimedia Fusion2 アップローダより

自作8方向動作で障害物との判定.mfa
★確認用:Java出力
Multimedia Fusion2 アップローダより

8方向動作で障害物との判定確認用:Java

作者:drnebula

8dir spacemovement widget rev2
★確認用:Java出力
8dir_spacemovement_widget_rev2

8dir_spacemovement_widget_rev2確認用Java

これら3つのうち今回、drnebulaのサンプル「8dir_spacemovement_widget_rev2」をベースに大幅な改造を加えた自作をします。ベースにはコリジョン処理が含まれていないので、これも自作で付ける。デテクタの付け方は好みだが筆者は8方向なら1つでやりたい。またMultimedia Fusion2アップローダのサンプルは高速ループを使わない処理なのでこれだとスピードアップの処理を加える際に問題が出てきます。改造のベースはBigfootの「fastloop topdown movement example」でも良いかと思ったのですが今回カメラは不要で、高速ループの回し方を解説するためには自分のロジックを使って、また実際の動作でも確認したかったからBigfootのサンプルはあえて参考にしませんでした。でも結果的にBigfootのサンプルと似たような処理にはなっていますが彼のサンプルの方が筆者のよりスマートです。