未分類

【Unity】StarterAssetのInputSystemを利用KeyBoardとGamePadのアクションを設定してみる

投稿日:

はじめに

こんにちはsuzukiです。今回は前回の記事で設定したしゃがむ動作をInputSystemを利用して設定してみたいと思います。
InputSystemは比較的新しい様々な機器の入力を柔軟に管理するためのシステムです。

InputSystemの概要

アクションごとに異なる機器のキーバインドを設定することができ、コードで書くと煩雑になってしまう処理をまとめることができます。
・キーボード
・GamePad
また機器の種類などが豊富なため柔軟なキー設定が可能です。

今回のStarterAssetを例にすると、下記の四つのアクションが設定されています。
・Move
・Look
・Jump
・Sprint
それぞれキーボードの入力の場合のキー設定とGamePadによる動作が設定されています。
Moveの場合は下記が設定されています。
キーボードのWASD
GamePadの左スティック

StarterAssetでのアクションの追加

前回設定した下記のコードだと、キーボードのCの入力がされていることは判定できます。
m_Crouching = Input.GetKey(KeyCode.C);
もしGamePadの入力も取得するようにコードを変更しようとしたら、if文やSwitch文を利用して、有効な入力機器を取得し、その入力機器のキーの入力を設定する必要があります。
しかしながら、InputSystemを利用すると、アクションに対するキーを設定側で行えるため
InputSystemで設定したアクションをもとに処理できるため、シンプルに動作を設定していくことができます。

それでは実際にInput.GetKey(KeyCode.C)ではなくするためStarterAssetを変更していきましょう。

InputActionの変更

InputActionでキーボードのCを押された際にonCrouchの処理が呼び出される準備をします。

PlayerArmatureのインスペクタの一番下にPlayerInputというコンポーネントがあります。
Actionsに設定されているStarterAsset(Input Action)をダブルクリックしてください。
InputAction Windowが開かれるので下記を設定します
・Actionsの右にある+ボタンをタップするとNewActionという項目が追加されるので、名前をCrouchに変更
・Action PropertiesのAction TypeをボタンからPass Throughに変更 Control TypeをAnyに変更
・ActionsのCrouch配下のNo Bindingを選択しPathにC[Keyboard]を設定 Use in control schemeでKeyboardMouseを選択
・ActionsのCrouchの右側の+をタップしAddBindingを選択
・ActionsのCrouch配下のNo Bindingを選択しPathにRight Trigger[GamePad]を設定 Use in control schemeでGamePadを選択

StarterAssetsInputs.csの変更

InputActionで設定したCrouchのアクションを受け取り、他クラスから参照可能なcrouchの定義

StarterAssetsInputsというファイルでInputActionで設定した、アクションが呼ばれた際の動作が設定されています。
元からあるコードを参考にCrouch用のコードを3点追加しましょう。
他のクラスから参照するためのcrouchの定義

Crouchアクションが実行された際によばれるOnCrouchをENABLE_INPUT_SYSTEMのマクロの中で実装

crouchに値を設定するCrouchInputの実装

ThirdPersonControllerの変更

最後に今まで直接Input.GetKey(KeyCode.C)で取得していたコードを修正します。
ThirdPersonControllerでは_inputという値でStarterAssetsInputsクラスにアクセスが元からされています。
Startのタイミング_inputを初期化しているので特に何もせず単純に
Input.GetKey(KeyCode.C)を_input.crouchに切り替えれば修正完了です。

さいごに

前回の記事では特に意識せず、簡易な方法で実装してしまっていたため、InputSystemの使い方の基本を学びながら変更してみました。
unityの良さである様々なプラットフォームに対して、アプリを提供することを考えると、入力の設定管理がしやすいのはとてもいいことだと感じました。

おすすめ書籍

Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 作って学べる Unity 超入門 スラスラ読める Unity C#ふりがなプログラミング

blog-page_footer_336




blog-page_footer_336




-未分類
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

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

CAPTCHA


関連記事

icon

About us

こんにちは、私たちは五反田周辺にて主に活動しているRE:ENGINESです。 デザイナー、エンジニアが集まり、プロダクトを一貫して制作しております。 また、制作の中で必要な周辺知識も学習し、個々人のス ...

【Unity】Starter AssetsのThird Person Character Controllerを使ってみた

1 はじめに2 Third Person Character Controllerの導入3 使い方4 さいごに5 おすすめ書籍 はじめに こんにちはsuzukiです。本日はUnityのThird Pe ...

【Unity】TextMeshProで文字の表示と日本語入力

1 はじめに2 プロジェクトに追加3 TextMeshProのプロパティ4 日本語を使うには5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。unityをアップデートしたらTextが ...

【Unity】Inspectorから値にアクセス可能にするためには。

1 はじめに2 シリアライズ2.1 [SerializeField]2.2 public2.3 [System.NonSerialized] public2.4 まとめ3 おすすめ書籍 はじめに こん ...

laravel logo

Laravel-debugerbarを使ってみた

1 はじめに2 インストール3 主な項目3.1 Messages3.2 Timeline3.3 Queries3.4 N+1 Queries3.5 Session3.6 Request4 さいごに5 ...

フォロー

blog-page_side_responsive

2023年7月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。