Input Managerウィンドウでは、プロジェクトの入力軸とそれに関連するアクションを定義することができます。このウィンドウにアクセスするには、Unityのメインメニューから、 Edit > Project Settings を選択し、右のナビゲーションから Input Manager を選択します。
Input Manager は以下のタイプのコントロールを使用します。
物理キーオプションを使用すると、キーコードを、異なる地域のユーザー間で異なる可能性のある言語固有のレイアウトではなく、物理的なキーボードレイアウトにマッピングすることができます。
例えば、キーボードの 1 行目の文字が “QWERTY” と読めるものと、“AZERTY” と読めるものがあります。つまり、よく知られている “WASD” キーを移動に使用するように特定の操作をスクリプト化した場合、AZERTY 配列のキーボードでは、正しい物理的配置 (矢印キーの配置など) になりません。
物理キーを有効にすると、Unity はユーザーの実際のレイアウトに関係なく、キーの 物理的な位置 を表現するために汎用の ANSI/ISO “Qwerty” レイアウトを使用します。つまり、“Q” キーを指定した場合は、ユーザーのキーボードの該当する位置に別の文字が配置されていたとしても、常に文字キーの最初の行の一番左の文字になります。
ゲーム内のテキスト入力にキー入力を読み込むべきではありません。これは、ユーザーが非ラテン文字を入力することができないためです。代わりに、Input.compositionString
を使用します。
作成するすべてのプロジェクトには、デフォルトで多くの入力軸があります。これらの軸を使用すると、キーボード、マウス、ジョイスティックの入力をプロジェクトですぐに使用できます。
これらの軸の詳細を見るには、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 (ジョイスティック番号) | この軸を制御する接続されたジョイスティック。特定のジョイスティックを選択することも、すべてのジョイスティックからクエリ入力を行うこともできます。 |
軸の値は以下のとおりです。
仮想軸を加えるには、Size (サイズ) フィールドの数値を増やします。リストの一番下に新しい軸が作成されます。新しい軸は、前に記載されている軸のプロパティをコピーします。
仮想軸を削除するには、以下のいずれかを行います。
仮想軸をコピーするには、仮想軸を右クリックして Duplicate Array Element を選択します。
キーまたはボタンを軸にマップするには、その名前を Input Manager の Positive Button または Negative Button プロパティに入力します。
キーの名前は以下の命名規則に従います。
キーファミリー | 命名規則 |
---|---|
文字キー |
a , b , c … |
数字キー |
1 , 2 , 3 … |
矢印キー |
up , down , left , right
|
テンキー |
[1] , [2] , [3] , [+] , [equals] … |
修飾キー |
right shift , left shift , right ctrl , left ctrl , right alt , left alt , right cmd , left cmd
|
特殊キー |
backspace , tab , return , escape , space , delete , enter , insert , home , end , page up , page down
|
ファンクションキー |
f1 , f2 , f3 … |
マウスボタンには、mouse 0、mouse 1、mouse 2
などの名前が付けられます。
ジョイスティックのボタンには、以下の命名規則が適用されます。
ボタンの原点 | 命名規則 |
---|---|
任意のジョイスティックの特定のボタン |
joystick button 0 、joystick button 1 、joystick button 2 … |
特定のジョイスティックの特定のボタン |
joystick 1 button 0 、joystick 1 button 1 、joystick 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;
//Define the speed at which the object moves.
float horizontalInput = Input.GetAxis("Horizontal");
//Horizontal の入力軸の値を取得
float verticalInput = Input.GetAxis("Vertical");
//Vertical の入力軸の値を取得
transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime);
//それぞれ horizontalInput, 0, verticalInput によって定義された XYZ 座標にオブジェクトを移動します
Time.deltaTime
は最後のフレームから経過した時間を表します。moveSpeed
変数に Time.deltaTime
を乗算すると、moveSpeed
オブジェクトが毎フレーム一定のスピードで移動します。