UnityでPS4のコントローラーを使う方法

こんにちは!洋梨🍐です。

Unityでゲーム開発(PC・スマートフォンどちらでも)をしていくうち、コントローラーを使いたくなることがきっとあると思います。そんな方に向けて今回はUnityでコントローラーを使う手順を書こうと思います。

※なお、複数コントローラーの使い方はこちら


Unityのキャラクターを動かしている様子

コントローラーをパソコン(Android上ではBluetoothで)に接続

今回はコントローラーにPS4用コントローラー「Dual Shock 4」を使います。


ワイヤレスコントローラー (DUALSHOCK 4) ジェット・ブラック

ここに特別な設定はいりません。PCには通常のUSBケーブルで。AndroidスマートフォンにはBluetoothで接続するだけです。

Input Managerに登録

次にUnityのInput Manager上でDS4のボタンを認識させるために設定を行います。

「Edit」→「Project Setting」→「Input」で設定画面を出すことができます。

次にSizeを変更します。追加したいボタンの分だけ増やした数値を入力します。※使用しない既存の項目を変更しても良い

次にボタンそれぞれを登録していきます。と言いたいところですがもう既に割り当ててあるある場合もあるのでその場合は登録しなくても大丈夫です。

次の例ではDS4の×ボタン動作を割り当てたものです

割り当ての一例。DS4の「×ボタン」入力を受け付ける用です。

スクリプトから読み取る

登録したボタンを使うには

string name = "DS4x"; //登録した名前
if(Input.GetButtonDown(name)){
   //押されているとき
}

これだけです。これをUpdate()内などに書き込み、処理を行います。

Input.GetButtonDown(string) は押されているときtrueを返し、押されていないときはfalseを返します。

また、スティック入力の場合は Input.GetAxis(string) を使用します。

DS4の右スティックの位置を取得するには次のように書きます。

float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");

この x , y は位置に応じて -1 ~ +1 の値になります。動かしていない(中央)ときは0になります

ちなみにこの Horizontal 及び Vertical は元々 Input Manager に登録されていると思います。

しかし、左スティックは登録されてないと思うので左スティックも使いたい場合は Input Manager から登録する必要があります。既存の Horizontal を参考に2つ目を作って使うことになります。

どんな感じに使うのか(参考程度)

PS4の右スティックで移動、×ボタンで上に上がるサンプルになります。動かしたいオブジェクトにアタッチすることで使用することができるはずです。なお、使用前に Input Manager での登録が必要です。

private void Update()
    {
        const float SPEED = 0.1f;

        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");

        gameObject.transform.position += new Vector3(x * SPEED, 0, y * SPEED);
        if (Input.GetButtonDown("DS4x")) gameObject.transform.position += Vector3.up * SPEED;
    
    }

以上です!


ここまで読んでくれてありがとうございました!!

ホームページでは他にも

・様々な記事や作った作品および過程
・ソースコード、素材ファイル
・あらゆる”モノ”の作り方

などなど随時、記事や作品を新規公開・更新していますので是非見ていってくださいね!見ていただけると本当に嬉しいです!