Unity

【Unity】ゲームパッド(logicool F310)でキャラクターを操作する

投稿日:2020年11月1日 更新日:

概要

以下の記事でUnityのキャラクターに対してキーボード操作で走る、ジャンプするなどの基本操作をできるようにしましたが、今回はこれらの操作をゲームパッドの入力で実現する方法についてメモしていきます。

環境

Windows10
Unity 2020.1.1f1
ゲームパッド:ロジクールF310

使用したゲームパッドについて

まず初めに、今回使用するゲームパッドはロジクール製のF310を使用した例になります。

logicool F310サイト

https://gaming.logicool.co.jp/ja-jp/products/gamepads/f310-gamepad.940-000137.html#product-tech-specs

ロジクールの公式サイトの仕様にはWindows10対応との記述はありませんでしたが、問題なく使えました。コストパフォーマンスに優れたハードウェアだと思います。

Step1 : PCへのF310の接続

F310の場合、PCのUSBポートに差し込むだけでドライバがインストールされ、すぐに使用可能になります。認識しているか不安な場合は以下から確認することができます。

[コントロールパネル] > [ハードウェアとサウンド] > [デバイスとプリンタ-] > [Logicool Dual Action]で右クリック > [ゲームコントローラの設定]
[プロパティ]
[テスト]タブを開きゲームパッドのボタンやジョイスティックを動かしてみて、軸やボタンの表示が反応すれば無事に認識されています。

注意事項

 このボタンの番号はUnityにおいて認識する番号とは異なります。 

どういうことかというと、Input Managerでjoystick button 1 と設定するボタンが上記の1とは限りません。

Step2 : UnityのInput Managerの設定

今回は以下の実現を目指してInput Managerを設定していきます。

走るジョイスティックの前後
旋回ジョイスティックの左右
ジャンプAボタン
ダッシュLBボタン + ジョイスティックの前後

Unityの[Edit] > [Project Setting] > [Input Manager]で次のように設定します。

「走る」の設定

Verticalを次のように設定します。

Type:Joystick Axis
Axis: Y axis
Joy Num :Get Motion from all Joysticks


「旋回」の設定

Horizontalを次のように設定します。

Type:Joystick Axis
Axis: X axis
Joy Num :Get Motion from all Joysticks


「ジャンプ」の設定

Jumpを以下のように設定します。(以下の例ではJump1という名前にしていますがJumpでもJump1でも問題ありません)

 F310のAボタン(緑)はJoystick button 1 です。


「ダッシュ」の設定

以下のように設定します。

 F310のLBボタン(左上)はJoystick button 4 です。

Step3 : スクリプト内での使用方法

Input Managerで設定した入力は以下のようにスクリプト内で使用できます。

ボタンの名称はInput Managerで設定した名前で認識することができます。

//Horizontalの入力
Input.GetAxisRaw("Horizontal")

//Verticalの入力
Input.GetAxisRaw("Vertical")

//Jumpの入力
Input.GetButton("Jump1")

//Sprint
Input.GetButton("Sprint")

GetButtonについては押している間ずっと認識する(trueになる)メソッドですが、押した瞬間のみを捉えたい場合はGetButtonDownを使用すると良いです。

例えばジョイスティックで前後に動きたい場合はこんな感じで書けます。

Vertical方向の移動例

v = -Input.GetAxis("Vertical");
transform.position += transform.forward * v ;

ここでわざわざvの頭にマイナスをつけている理由は 何故かジョイスティックの前方向-1、後ろ方向が1にマッピングされているからです。 

これはそういうもの、と割り切って、マイナスをつけて対応してます。


なお、F310とInputManagerの対応はこちらにまとめています。こちらのほうがボタンの対応は分かりやすいと思いますのでお使いください。

以上

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Unity】衝突時にパーティクルを発生させる

Contents1 目的2 環境3 事前準備4 Step1 : 衝突させるオブジェクトの設置5 Step2 : Sphereへのパーティクル設定6 Step3 : 衝突時にParticleを再生するス …

【Unity】ThirdPersonUserControlの方向転換動作おかしい時の対処

Contents1 事象2 調査3 対処 事象 Standard AssetsのThirdPersonUserControlを使用してEthanを動かすとき、デフォルトの正しい動きは↑↓キーで前進後退 …

【Unity】 Standard Assetsのダウンロードとインポート

Contents1 目的2 環境3 Step1 : Asset Storeを開く4 Step2 : Standard Assetsのインストール5 まとめ 目的 UnityでStandard pack …

【Unity】キャラクター操作その4 –  レーザーソードを持たせてON/OFFする

Contents1 概要2 環境3 Step1 : レーザーソードの調達4 Step2 : レーザーソードを持たせる5 Step3 : レーザーソードをON/OFFする6 まとめ 概要 前回はRobo …

【Unity】他オブジェクトのスクリプトのメソッドがどうしても取ってこれない原因と対処法

Contents1 概要2 環境3 まず最初に確認すべきこと4 結論:名前空間を指定していなかった5 エラーの実例5.1 原因6 まとめ 概要 Unityでほかのスクリプトで定義されているObject …

言語切り替え

カテゴリー