【Unity】FPS操作をタッチ画面に対応させてみた

unity

FPSゲームはPCであればキーボードとマウスで操作しますが、モバイル対応時にジョイスティックやボタンをつけて操作してみました。

作ってみたゲームは以下の通りです。

 

ジョイスティックで移動、透明パネルで視点回転、ボタンで発砲、という操作になっています。

使用しているのはStandardAssetsのRigidBodyFPSController(以降、FPSコントローラ)です。

FPSコントローラはPCで操作すると、キーボードのWASDで移動、マウス移動で視点回転がデフォルトになっています。

こいつを少し改造して、モバイル向けにしてみました。

必要なステップとしては、

  1. FPSコントローラを変更。
  2. ジョイスティックや、パネル、ボタンを配置。
  3. ジョイスティック等を動かした時に、FPSコントローラを操作するスクリプトを作成。

動画ではボタンで発砲していますが、ジャンプボタンを実装する流れで説明します。

FPSコントローラを変更

キーボード、マウス入力をジョイスティックやボタン入力にします。

RigidbodyFirstPersonController.cs

ジャンプと移動に関して、ボタン入力に変更しています。

次に視点移動をパネル入力に変更します。

MouseLook.cs

下記を追加&変更します。

マウスから視点回転を操作していましたが、パネルからの入力に切り替えます。

ジョイスティックとボタンの配置

Joystick Packをアセットストアから入手します。

Canvasの中に、Fixed Joystickのprefabを配置します。

ジョイスティックの中のボタンを、コピーしてジャンプボタンにしています。

パネルを透明にして右側に配置します。

右側のボタンとパネルについては、以下のサイトにあるスクリプト(FixedButton.cs, FixedTouchField.cs)をそれぞれアタッチします。

https://gist.github.com/ditzel/0257d74a7a04626efce7bd1f7a6cfaa0

FPSコントローラを操作するスクリプトを作成

作成したらRigidBodyFPSController.csにアタッチします。

ジョイスティック、ボタン、パネルをセットして完了です。

参考

ABOUTこの記事をかいた人

のっくん

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog