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】ゲームパッド(F310)とInput Managerとの対応まとめ

Contents1 概要2 まず結論3 どうやって調べたか3.1 使用した設定3.2 使用したスクリプト 概要 Unityでロジクール製のF310でキャラクター操作する際に、F310の各ボタンをInp …

UnityでSerializedObjectNotCreatableException:Object at index 0 is nullが出た時の対処法

Contents1 発生状況1.1 実行環境2 対処その13 対処その24 まとめ 発生状況 UnityでFreeのAnimationクリップをeditから編集し、その後Gameをスタートしたところ、 …

【Unity】キャラクターにSimpleAnimationでアニメーションをつける

Contents1 概要2 環境3 使用するキャラクタオブジェクト4 Step1 : Animationの 入手5 Step2 : SimpleAnimationの取得6 Step3 : Inspec …

【Unity】 キーボードでキャラクターを操作する

Contents1 概要2 環境3 目的4 Step1 : コンポーネント類の追加4.1 Rigidbodyの追加4.2 Colliderの追加5 Step2 : Main Cameraの設定6 St …

【Unity】キャラクターが近づいたら自動ドアが開閉するようにする

Contents1 概要1.1 実現例2 使用アセット3 Step 1 : Doorオブジェクトの配置4 Step2 : Colliderの設定5 Step3 : アニメーションとスクリプト 概要 U …

言語切り替え

カテゴリー