3Dゲームを作成する上で、Unityちゃんを使っていたんですけど、思った以上にスマホに対応させるのに時間がかかってしまいました。
キーボードを使って操作するのは簡単なんですけどね。ジョイスティック対応に関する情報が意外と少ないのでまとめておきます。
ちなみに、数年前に公開されているジョイスティックに対応させる記事は、アセットが使えなくなっているものもあるので、なるべく最新の情報を参考にするべきだと思います。
Unityちゃんをジョイスティックに対応させる
今回利用するアセットは次の通りです。
- ユニティちゃん3Dモデルデータ
- Joystick Pack
- Locomotion Setup
- スタンダードアセット
全て無料で使うことが出来ます。本当にありがたいことです。
ジョイスティック本体は、スタンダードアセットに用意されている「MobileSingleStickControl」でも構いません。
私は、見た目がよりジョイスティックっぽいのでJoystick Packを使っています。
これらのアセットをアセットストアよりダウンロード、インポートしておきましょう。
追記:
どうやらLocomotion Setupアセットが見つからないようですね。
Locomotion Setupを持っていない方はこちらの記事にて、ジョイスティックで動かす方法を紹介しています。SD版Unityちゃんを使っていますが方法は同じです。
Terrainを作成してUnityちゃんを配置する
まずは、Terrainを作ってUnityちゃんを配置させましょう。
ヒエラルキーウィンドウで右クリックして「3D Object」→「Terrain」と進みます。
床が出来るので、インポートしたUnityちゃんを配置します。
Assets/unity-chan!/Unity-chan! Model/Prefabs/unitychan.prefabにある「unitychan」をヒエラルキーウィンドウにドラッグ&ドロップ。
unitychanを選択してインスペクターより「Idle Changer」「Face Update」「Auto Blink」のチェックを外しておきます。
Add Componentより「Rigidbody」「Capsule Collider」「Locomotion Player」を追加します。
それぞれの値を上の画像のようにします。コライダは大体これぐらいの値がちょうど良さそうです。
ジョイスティックを配置する
ヒエラルキーウィンドウで右クリックして「UI」→「Canvas」を作成します。
Canvasを選択した状態で、インスペクターのUI Scale Modeを「Scale With Screen Size」に変更。
ReferenceResolutionの値を変更して、ゲームビューのサイズと合わせてください。私はXを1920、Yを1080にしました。
次に、インポートしたJoystick PackのPrefabに入っている「Fixed Joystick」をCanvasにドラッグ&ドロップします。
ゲームビューを確認しながら、ジョイスティックの位置を決めてください。
ジョイスティックの見た目を変えたい場合は、「Fixed Joystick」を選択した状態で、インスペクターのSource Imageから変更できます。
JoystickToEventsのスクリプトを修正する
Assets/Locomotion Setup/ScriptsにあるJoystickToEvents.csをダブルクリックしてスクリプトを少し修正します。
画像のようにスクリプトを書き換えています。これでジョイスティックでUnityちゃんを操作することが出来るようになります。
ちなみに、スタンダードアセットに用意されている「MobileSingleStickControl」を使いたい場合は、コメントアウトしている16~17行目を有効にすればOKです。
この時は、4行目に記述していますが「using UnityStandardAssets.CrossPlatformInput;」の宣言を忘れないようにしてください。
カメラがUnityちゃんを追従するようにする
Unityちゃんの動きに合わせてカメラが追いかけてくるようにします。
メインカメラは不要なので、Main Cameraを選択してインスペクターからチェックを外します。
Standard Assets/Cameras/Prefabs/MultipurposeCameraRigをヒエラルキーウィンドウに持っていきます。
MultipurposeCameraRig選択した状態で、Unityちゃんをインスペクター「Auto Cam」のTargetにドラッグ&ドロップしましょう。
これで操作に合わせてカメラが追いかけてきます。
ゲームを実行して動作を確認
ちゃんとジョイスティックの操作通りにUnityちゃんが動いていますね。お疲れさまでした。