[Unity5][Android][iOS]バーチャルパッドを実装する


Unity5でスマートフォンゲーム向けにバーチャルパッドを実装する方法を紹介します。

目標

今回実装するバーチャルパッドは下図のようなものです。
画像左下のパッドへの入力値を表示するところまでを行います。

手順

  1. CrossPlatformInputをインポートする
  2. Prefabを設置する
  3. パッドからの入力を受け取るスクリプトを記述する

1.CrossplatformInputをインポートする

上部メニューバーから、[Assets]->[Import Package]->[CrossPlatformInput]の順に選択し、パッケージをインポートします。

2.Prefabを設置する

Projectウィンドウから、[Standard Assets]->[CrossPlatformInput]->[Prefabs]->[MobileSingleStickControl]を選びシーン内に設置します。

するとバーチャルパッドとついでにボタンが表示されます。
注意:このときBuild SettingでPlatformがAndroidもしくはiOSに設定されていないと、パッドは表示されません!(筆者はこれを忘れていてめっちゃつまづいた)

この時点でシーンを実行すると、パッドをマウス左クリックでホールドすることでぐりぐり動かせるようになります。

3.パッドからの入力を受け取るスクリプトを記述する

最後にスクリプトでパッドへの入力値を確認してみます。
冒頭に、using UnityStandardAssets.CrossPlatformInput; を記述することで
CrossPlatformInputManager.GetAxisRawによりパッドへの入力値を受け取れます。

Sample.cs
using UnityEngine;
using System.Collections;
using UnityStandardAssets.CrossPlatformInput; //←追加

public class Sample : MonoBehaviour {
    // Update is called once per frame
    void Update () {
        // 水平方向への入力( -1.0 ~ 1.0 )
        Debug.Log( "Horizontal : " + CrossPlatformInputManager.GetAxisRaw( "Horizontal" ) );
        // 垂直方向への入力( -1.0 ~ 1.0 )
        Debug.Log( "Vertical : " + CrossPlatformInputManager.GetAxisRaw( "Vertical" ) );

    }
}

実行してみると、Console画面にパッドへの入力値が表示されているのが分かります。

あとはこの値をキャラクターの移動などに用いるだけですね。