Version: 2019.4
入力
モバイルデバイスの入力

Input Manager

Input Manager (入力マネージャー) ウィンドウでは、プロジェクトの入力軸とそれに関連する動作を定義できます。これにアクセスするには、Unity のメインメニューから Edit > Project Settings (編集 > プロジェクト設定) の順に選択し、Input (入力) カテゴリを選択します。

Input Manager は以下のタイプのコントロールを使用します。

  • Key (キー) は、W、Shift、 スペースバーなど、物理キーボード上の任意のキーを指します。
  • Button (ボタン) は、Xbox One コントローラーの X ボタンなど、物体的なコントローラー (ゲームパッドなど) の ボタン を指します 。
  • virtual axis (仮想軸、複数形はaxes) は、ボタンやキーとしてコントロールにマッピングされます。ユーザーがコントロールをアクティブにすると、軸は [–1..1] の範囲で値を受け取ります。この値はスクリプトで使用できます。

仮想軸

作成するすべてのプロジェクトには、デフォルトで多くの入力 軸があります。これらの軸を使用すると、キーボード、マウス、ジョイスティックの入力をプロジェクトですぐに使用できます。

これらの軸の詳細を見るには、Input Manager ウィンドウを開き、軸の名前の横にある矢印をクリックしてそのプロパティーを展開します。

各入力軸には以下のプロパティーがあります。

プロパティー 機能
Name (名前) 軸名。これを使用して、スクリプトから軸にアクセスできます。
Descriptive Name、Descriptive Negative Name (正方向の通称、負方向の通称) これらの値は廃止予定で、機能しません。以前は、ユーザー用に起動時に再バインドコントロール画面上に表示されましたが、この画面も廃止されました。
Negative Button、Positive Button (負方向ボタン、正方向ボタン) 軸をそれぞれ負の方向と正の向きに押すためのコントロール。これらは、キーボードのキー、ジョイスティックやマウスのボタンなどに使用可能です。
Alt Negative Button、Alt Positive Button (負方向ボタン (副)、正方向ボタン (副)) 軸をそれぞれ負の方向と正の向きに押すための別の (補足的) コントロール。
Gravity (重力) 何も入力がない場合に軸がニュートラルになるための速さ (ユニット/秒)。
Dead (無効) アプリケーションが動きを認識するために、 ユーザーがアナログスティックを動かす必要がある距離。ランタイムに、すべてのアナログデバイスからのこの範囲内の入力は null とみなされます。
Sensitivity (感度) 軸がターゲット値に向かう速さ (ユニット/秒)。これはデジタルデバイスだけに使用できます。
Snap (スナップ) これを有効にすると、逆方向に対応するボタンを押すと軸の値が 0 にリセットされます。
Type (タイプ) 軸を制御する入力タイプ。以下の値から選択します。

- キー、またはマウスボタン
- マウスの動き
- ジョイスティック軸
Axis (軸) この軸を制御する接続されたデバイスの軸。
JoyNum (ジョイスティック番号) この軸を制御する接続されたジョイスティック。特定のジョイスティックを選択することも、すべてのジョイスティックからクエリ入力を行うこともできます。

軸の値は以下のとおりです。

  • ジョイスティックとキーボード入力の場合は –1 と 1 の間。これらの軸のニュートラル位置は 0 です。キーボードのボタンなど、一部のタイプのコントロールは入力の強度に影響されないため、–1、0、1 以外の値を出力しません。
  • マウス入力に対するマウスデルタ (最後のフレームでのマウスの移動値)。ユーザーがマウスを素早く動かす場合、マウス入力軸の値は 1 より大きいか –1 より小さい値になります。

仮想軸の追加、削除、コピー

仮想軸を加えるには、Size (サイズ) フィールドの数値を増やします。リストの一番下に新しい軸が作成されます。新しい軸は、前に記載されている軸のプロパティーをコピーします。

仮想軸を削除するには、以下のいずれかを行います。

  • Size フィールドの数値を小さくします。リストの最後の軸を削除します。
  • 軸を右クリックして Delete Array Element (配列要素を削除) を選択します。
    ノート: この操作を元に戻すことはできません。

仮想軸をコピーするには、仮想軸を右クリックして Duplicate Array Element を選択します。

仮想軸をコントロールにマッピング

キーまたはボタンを軸にマップするには、その名前を Input Manager の Positive Button または Negative Button プロパティーに入力します。

キーの名前は以下の命名規則に従います。

キーファミリー 命名規則
文字キー abc
数字キー 123
矢印キー
テンキー [1][2][3][+][=]
修飾キー 右シフト左シフト右 Ctrl左 Ctrl右 Alt左 Alt右 Cmd左 Cmd
特殊キー BackspaceTab改行EscスペースDeleteEnterInsertHomeEndPage upPage down
ファンクションキー F1F2F3

マウスボタンには、mouse 0、mouse 1、mouse 2 などの名前が付けられます。

ジョイスティックのボタンには、以下の命名規則が適用されます。

ボタンの原点 命名規則
任意のジョイスティックの特定のボタン joystick button 0joystick button 1joystick button 2
特定のジョイスティックの特定のボタン joystick 1 button 0joystick 1 button 1joystick 2 button 0

Input.GetKey と上記の命名規則によって、特定のキーやボタンの入力を以下の例のようにクエリできます。

input.GetKey("a");

キーにアクセスするもう 1 つの方法は、KeyCode 列挙型を使用することです。

スクリプトで仮想軸を使用

スクリプトから仮想軸にアクセスするには、軸名を使用します。

例えば、水平軸の現在の値をクエリして変数に格納するには、以下の例のように Input.GetAxis を使用します。

float horizontalInput = Input.GetAxis ("Horizontal");

動きではなくイベントを表す軸 (例えば、ゲーム内での武器の発射) の場合は、代わりに Input.GetButtonDown を使用します。

2 つ以上の軸が同じ名前を持つ場合、クエリは最大の絶対値を持つ軸を返します。これにより、1 つの軸名に複数の入力デバイスを割り当てることができます。

例えば、Horizontal という名前の 2 つの軸を作成し、1 つをキーボード入力に割り当て、もう 1 つをジョイスティック入力に割り当てることができます。ユーザーがジョイスティックを使用する場合、入力はジョイスティックから行われ、キーボード入力は null です。それ以外の場合、入力はキーボードから行われ、ジョイスティックの入力は null です。これにより、複数のコントローラーからの入力を処理する単一のスクリプトを書くことができます。

水平 軸と 垂直 軸からの入力と transform.Translate メソッドを使用して、ゲームオブジェクトを XZ スペース (前、後、左、右) に移動できます。以下のコードを移動したいゲームオブジェクトにアタッチされたスクリプトの update() メソッドに加えます。

float moveSpeed = 10;
//オブジェクトが移動する速さを定義します

float horizontalInput = Input.GetAxis("Horizontal");
//水平入力軸の値を取得します

float verticalInput = Input.GetAxis("Vertical");
//垂直入力軸の値を取得します

transform.Translate(new Vector3(horizontalInput, 0, verticalInput) * moveSpeed * Time.deltaTime);
//それぞれの軸が水平入力、0、垂直入力で定義された XYZ 座標にオブジェクトを移動します

Time.deltaTime は最後のフレームから経過した時間を表します。moveSpeed 変数に Time.deltaTime を乗算すると、moveSpeed オブジェクトが毎フレーム一定のスピードで移動します。

入力
モバイルデバイスの入力