Unityちゃんをジョイスティックで動かす方法【スマホ対応】

3Dゲームを作成する上で、Unityちゃんを使っていたんですけど、思った以上にスマホに対応させるのに時間がかかってしまいました。

キーボードを使って操作するのは簡単なんですけどね。ジョイスティック対応に関する情報が意外と少ないのでまとめておきます。

ちなみに、数年前に公開されているジョイスティックに対応させる記事は、アセットが使えなくなっているものもあるので、なるべく最新の情報を参考にするべきだと思います。

スポンサーリンク

Unityちゃんをジョイスティックに対応させる

今回利用するアセットは次の通りです。

  • ユニティちゃん3Dモデルデータ
  • Joystick Pack
  • Locomotion Setup
  • スタンダードアセット

全て無料で使うことが出来ます。本当にありがたいことです。

ジョイスティック本体は、スタンダードアセットに用意されている「MobileSingleStickControl」でも構いません。

私は、見た目がよりジョイスティックっぽいのでJoystick Packを使っています。

これらのアセットをアセットストアよりダウンロード、インポートしておきましょう。

追記:

どうやらLocomotion Setupアセットが見つからないようですね。

Unityちゃんが画面端で動かなくなる現象の対策について
いや~ここまで順調に進んでいたと思っていたら、思わぬ落とし穴が待っていました。 まぁエラーが対峙することなんてプログラミングの世界においては日常茶飯事なんでしょうけどね。 Unityちゃんが画面端に行くと操作が効かなくなる現象の対処 どうい...

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」を追加します。

Unityちゃんのコライダや物理の設定

それぞれの値を上の画像のようにします。コライダは大体これぐらいの値がちょうど良さそうです。

ジョイスティックを配置する

ヒエラルキーウィンドウで右クリックして「UI」→「Canvas」を作成します。

Canvasを選択した状態で、インスペクターのUI Scale Modeを「Scale With Screen Size」に変更。

ReferenceResolutionの値を変更して、ゲームビューのサイズと合わせてください。私はXを1920、Yを1080にしました。

次に、インポートしたJoystick PackのPrefabに入っている「Fixed Joystick」をCanvasにドラッグ&ドロップします。

Unityちゃんが配置されたゲームビュー

ゲームビューを確認しながら、ジョイスティックの位置を決めてください。

ジョイスティックの見た目を変えたい場合は、「Fixed Joystick」を選択した状態で、インスペクターのSource Imageから変更できます。

JoystickToEventsのスクリプトを修正する

Assets/Locomotion Setup/ScriptsにあるJoystickToEvents.csをダブルクリックしてスクリプトを少し修正します。

Joystickのプログラムを修正する

画像のようにスクリプトを書き換えています。これでジョイスティックでUnityちゃんを操作することが出来るようになります。

ちなみに、スタンダードアセットに用意されている「MobileSingleStickControl」を使いたい場合は、コメントアウトしている16~17行目を有効にすればOKです。

この時は、4行目に記述していますが「using UnityStandardAssets.CrossPlatformInput;」の宣言を忘れないようにしてください。

カメラがUnityちゃんを追従するようにする

Unityちゃんの動きに合わせてカメラが追いかけてくるようにします。

メインカメラは不要なので、Main Cameraを選択してインスペクターからチェックを外します。

Standard Assets/Cameras/Prefabs/MultipurposeCameraRigをヒエラルキーウィンドウに持っていきます。

MultipurposeCameraRig選択した状態で、Unityちゃんをインスペクター「Auto Cam」のTargetにドラッグ&ドロップしましょう。

これで操作に合わせてカメラが追いかけてきます。

ゲームを実行して動作を確認

Unityちゃんがjoystickで動くアニメーション

ちゃんとジョイスティックの操作通りにUnityちゃんが動いていますね。お疲れさまでした。