操作系の変更としてJoystickの導入

キーボードで遊べるゲームをスマホに持っていくと、キーボードが無いため遊ぶことができません。 ここでは上下左右のキーで遊べるゲームに対して、画面上にJoystickを配置して、それで同様に遊べるようにします。 これを実現させるためにはUnity6でInputSystemを活用します。

手順

  1. 公式のStarterKitをインストール
  2. 指定されている通りにJoystickを導入
  3. キーボード専用のプログラムのInputSystem対応の書き換え

StarterKitの導入

  1. Window→Package Management→Package Manager
  2. 検索で「third」など入力して「Starter Assets - Thirdperson | URP」を指定。なければ、Window→Package Management→Asset StoreでブラウザからAsset Storeに行き、「Starter Assets -Thirdperson | URP」をインストール
  3. 「Download Update(バージョン番号)」のボタンを押してインストール
  4. 「+Import (バージョン番号) to project」を押し、すべてimportする

Joystickの導入

StarterAssets/StarterAssets_Documentation.pdfの内容に沿って導入

手順

  1. 必要なアセットを導入
  2. Playerのプログラムの変更
  3. Playerの調整
  4. Joystickの調整

必要なアセットを導入

  1. StarterAssets/Mobile/Prefabs/CanvasInputs/にある UI_Canvas_StarterAssetsInputs_Joysticks.prefabをhierarchyに置く
  2. StarterAssets/Mobile/Prefabs/EventSystem/にある UI_EventSystem.prefabをhierarchyに置く
  3. StarterAssets/InputSystem/ にある StarterAssetsInputs.cs を Playerオブジェクトにアタッチする。

Playerのプログラムの変更

元のPlayerController

public class PlayerController : MonoBehaviour
{
  private float movementX;
  private float movementY;
  void OnMove(InputValue movementValue){
        Vector2 movementVector =movementValue.Get<Vector2>();
        movementX=movementVector.x;
        movementY=movementVector.y;
  }
  void FixedUpdate(){      
    Vector3 movement = new Vector3(movementX,0.0f, movementY);
    ...

変更後のPlayerControlle.cs

using StarterAssets;
public class PlayerController : MonoBehaviour
{
  public StarterAssetsInputs input;
/*
  void OnMove(...
  }
*/
  void FixedUpdate(){      
    Vector2 move = input.move;
    Vector3 movement = new Vector3(move.x,0.0f, move.y);
    ...

Playerの調整

Playerのinspector
変更後

「Fix UI Input Module」ボタンが出たら押す

Joystickの調整

UI_Canvas_StarterAssetsInputs_Joysticsのinspector画面
それぞれにPlayerを指定する

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科