マウスで操作するシューティング

ActionScript 3.0, Flash Player 8.5時代に向けて、ブラウザ上でゲームを動かすことを前提に、マウスで自機を操作するシューティングに関しても妄想を練っておきたい。いや別にキーボードで操作してもいいんだが、ブラウザゲーはマウスでできたほうがいいよね?なんとなく。

マウスで自機を操作する場合、だいたい以下の2つの方法に分かれる。

  • 自機がマウスカーソルの方向に向かって一定速度で動く。自機の最大速度は決まっている。
  • 自機はマウスカーソルと同化しカーソルのある場所に存在する。自機は画面中のどの場所へも一瞬で移動できる。

普通の2Dシューティングをマウス動作に対応させたものの多くは、前者の一定速度追随型のものが多い。この方式だと自機の最大速度は決まっているため、キーやパッドで操作した場合とほぼ同じ動作を行うことができる。ただこの方式は若干直感的でない。マウスカーソルから大幅に遅れて自機が追随するという動作をするため、弾避けが困難になることがある。

後者はマウスカーソルのある場所そのものに自機がいるためにだいぶ直感的だ。この方式の欠点は、自機があらゆる場所へほぼ一瞬で移動できてしまうため、普通の2Dシューの様式が通用しないことがあること。また当たり判定の取りかたによっては敵弾をすり抜けて移動できてしまうことだ。

Noizを作ったときは後者で実装したのだが、そのときは1フレームで移動した軌跡全てに当たり判定を持たせたため、敵弾をすり抜けて移動することはできなくなっている。ただ画面端から反対端まで一瞬で移動できてしまうことはどうしようもなく、操作感覚はだいぶ特殊になってしまっている。

両者とも一長一短だ。あと細かい弾避けのやりにくさは両者ともあまり変わらずひどく、弾幕シューには向いていない場合が多い。マウスでドット単位の避けを簡単に実現する方法があればいいんだけどねえ。なにかいい方法ない?

あとこの両者のハイブリットっていうのもあるかも。通常前者で動いていて、マウスクリック中は後者になるという、移動+ダッシュみたいな操作系。これはこれでマウスの特性を活かしていていいかもね。

あとマウスカーソルが画面外にいくと操作できなくなるっていう問題もあるので、画面ふちにのりしろを残しておくってのも必要かね。いろいろ問題点が多いな。