XR Device Simulator
マウスやキーボードによるユーザー入力をハンドルして、XR コントローラーや XR ヘッドマウントディスプレイ (HMD) のシミュレーションに活用するコンポーネント。
このクラスは XR Origin を構成するカメラやコントローラーを直接操作するのではなく、シミュレートされた入力デバイスを通じて間接的に関与します。
このコンポーネントで想定される Input System アクションとマウスとキーボードのバインディングのサンプルを入手するには、Package Manager ウィンドウを使用して XR Device Simulator サンプルをプロジェクトにインストールします。このサンプルには、このコンポーネントがアタッチされた GameObject
のプレハブも含まれており、そこではすでに設定済みのサンプルアクションが参照されています。このシミュレーターを使用するには、シーンにプレハブを追加します (このプレハブは InputActionManager を使用して、Input System アクションを有効にします)。
このシミュレーターで期待される動作を実現するために、XR Origin は Input System アクションを使用して (ActionBasedController
と TrackedPoseDriver
を使用するなどの方法で)、HMD とコントローラーの位置と回転を読み取る必要があります。XR 入力サブシステムデバイスメソッド (XRController
と SpatialTracking.TrackedPoseDriver
など) を使用しようとしても、このシミュレーターは Input System に依存してデバイスのシミュレーションを実行するため、期待した動作は得られません。
サンプルコントロール
シミュレーションを行う XR HMD や XR Controller はそれぞれ、コントロールや値を変更する前に操作する必要があります。コントローラーの操作を中止したときに、そのコントローラーのコントロールが作動していると、各コントロールは作動状態を維持します。こうすることで、専用のバインディングを設定せずにそれぞれのコントローラーを個別かつ同時に操作することが可能になり、マルチハンドインタラクションを実現できます。
- 左 Shift [ホールド]
- 左手コントローラーを操作します
- Space [ホールド]
- 右手コントローラーを操作します
- マウス 2 (右マウスボタン) [ホールド]
- HMD を操作します
- T [トグル]
- 左手コントローラーの操作を切り替えます (そのため、左 Shift のホールドは不要)。 マウス入力 (移動やホイール回転の変化量) を使用して、操作対象デバイスを 移動 または 回転 することができます。
- R [トグル]
- マウス入力の移動または回転モードを切り替えます
- Ctrl [ホールド]
- ホールドしている間だけ回転モードに入ります
- マウス 3 (中央マウスボタン) [ホールド]
- ホールドしている間だけ回転モードに入ります
- Z [ホールド]
- Z 軸に対して移動/回転/リセットを制限します
- X [ホールド]
- X 軸に対して移動/回転/リセットを制限します
- C [ホールド]
- Y 軸に対して移動/回転/リセットを制限します
- V [プレス]
- 位置または回転をリセットします (現在のモードが移動か回転かに応じて変化)
- \ [トグル]
- ゲームウィンドウに対するマウスカーソルのロックとアンロックを切り替えます。Inspector の値のドロップダウンで Locked または Confined を選択します。
- G [ホールド]
- グリップ
- マウス 1 (左マウスボタン) [ホールド]
- トリガー
- B [ホールド]
- プライマリーボタン
- N [ホールド]
- セカンダリーボタン
- M [ホールド]
- メニュー
- 4 [ホールド]
- プライマリー 2D 軸のクリック
- 5 [ホールド]
- セカンダリー 2D 軸のクリック
- 6 [ホールド]
- プライマリー 2D 軸のタッチ
- 7 [ホールド]
- セカンダリー 2D 軸のタッチ
- 8 [ホールド]
- プライマリータッチ
- 9 [ホールド]
- セカンダリータッチ。
コントローラーやデバイスの位置にある
Vector2
コントロールは WASD キーを使用します。このうち、入力を受け付けるコントロールはトグルで有効になります (複数をアクティブにすることが可能)。
- セカンダリータッチ。
コントローラーやデバイスの位置にある
- 1 [トグル]
- キーボード入力を Primary 2D Axis (コントローラーを操作するサムスティック) に適用するかどうかを切り替えます
- 2 [トグル]
- キーボード入力を Secondary 2D Axis (コントローラーを操作するタッチパッド) に適用するかどうかを切り替えます
- 3 [トグル]
- キーボード入力を HMD/コントローラー Position に適用するかどうかを切り替えます Position が有効である場合は、次の動作になります。
- WASD [ホールド]
- HMD/コントローラーを前/左/後/右に移動します (Unity エディターのシーンビューを再現)
- QE [ホールド]
- HMD/コントローラーを上/下に移動する (Unity エディターのシーンビューを再現) Primary/Secondary 2D Axis が有効である場合は、次の動作になります。
- WASD [ホールド]
- コントローラーの Primary/Secondary 2D Axis を前/左/後/右にプッシュします
- QE [ホールド]
- 反対側コントローラーの Primary/Secondary 2D Axis の左/右 (1 つのコントローラーの操作時のみ機能)
- マウス 4 (前方ボタン) とマウス 5 (後方ボタン) [ホールド]
- 反対側コントローラーの Primary/Secondary 2D Axis の上/下 (1 つコントローラーの操作時のみ機能)
- IJKL [ホールド]
- 反対側コントローラーの Primary/Secondary 2D Axis を前/左/後/右にプッシュする代替入力 (1 つコントローラーの操作時のみ機能)
プロパティ | 説明 |
---|---|
Keyboard X Translate Action | ホールド中に X 軸方向 (左右) への移動を行うための Input System アクション。InputActionType.Value AxisControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは A キー (左/負の方向) と D キー (右/正の方向) にバインディングされています。 |
Keyboard Y Translate Action | ホールド中に Y 軸方向 (上下) への移動を行うための Input System アクション。InputActionType.Value AxisControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは S キー (下/負の方向) と W キー (上/正の方向) にバインディングされています。 |
Keyboard Z Translate Action | ホールド中に Z 軸方向 (前後) への移動を行うための Input System アクション。InputActionType.Value AxisControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは S キー (後/負の方向) と D キー (前/正の方向) にバインディングされています。 |
Manipulate Left Action | ホールド中に左手コントローラーの操作を有効にするための Input System アクション。ButtonControl である必要があります。このアクションが解除されたときに左手コントローラーのコントロールが作動していると、そのコントロールは作動状態を維持します。こうすることで、専用のバインディングを設定せずにそれぞれのコントローラーを個別かつ同時に操作することが可能になり、マルチハンドインタラクションを実現できます。 XR Device Simulator サンプルのプレハブでは、このアクションは左 Shift キーにバインディングされています。 |
Manipulate Right Action | ホールド中に右手コントローラーの操作を有効にするための Input System アクション。ButtonControl である必要があります。このアクションが解除されたときに右手コントローラーのコントロールが作動していると、そのコントロールは作動状態を維持します。こうすることで、専用のバインディングを設定せずにそれぞれのコントローラーを個別かつ同時に操作することが可能になり、マルチハンドインタラクションを実現できます。 XR Device Simulator サンプルのプレハブでは、このアクションは Space キーにバインディングされています。 |
Toggle Manipulate Left Action | 押下時に左手コントローラーの操作を切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは T キーにバインディングされています。 |
Toggle Manipulate Right Action | 押下時に右手コントローラーの操作を切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは Y キーにバインディングされています。 |
Manipulate Head Action | ホールド中に HMD の操作を有効にするための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションはマウスの右ボタンにバインディングされています。 |
Mouse Delta Action | X 軸と Y 軸に沿って、またはその近くでスケールされた量だけ移動または回転を行う Input System アクション。InputActionType.Value Vector2Control である必要があります。通常は、マウスのスクリーンスペースモーション変化量 (ピクセル単位) にバインディングされます。XR Device Simulator サンプルのプレハブでもそのように設定されています。 |
Mouse Scroll Action | Z 軸に沿って、またはその近くでスケールされた量だけ移動または回転を行う Input System アクション。InputActionType.Value Vector2Control である必要があります。通常は、水平方向と垂直方向のスクロールホイールにバインディングされますが、使用されるのは垂直方向だけです。XR Device Simulator サンプルのプレハブでもそのように設定されています。 |
Rotate Mode Override Action | マウスをホールドした状態で動かして操作対象デバイスを回転させる Input System アクション。ButtonControl である必要があります。現在のマウストランスフォーメーションのモードにかかわらず、ホールド時は回転モードになります。 |
Toggle Mouse Transformation Mode Action | マウスを動かしながらボタンを押して操作対象デバイスの移動と回転を切り替える Input System アクション。ButtonControl である必要があります。 |
Negate Mode Action | マウスをホールドしたまま動かしたときに、通常のようにデバイスを移動するのではなく回転させる動作を (その逆も同様に) 実現するための Input System アクション。ButtonControl である必要があります。ホールドしている間、マウストランスフォーメーションのモードを一時的に変更して、すばやく調整を行うために利用できます。 |
X Constraint Action | マウスの移動時やリセット時に、X 軸に対して移動や回転を制限するための Input System アクション。他の軸のコンストレイントと組み合わせて、平面に対して制限することもできます。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは X キーにバインディングされています。 |
Y Constraint Action | マウスの移動時やリセット時に、Y 軸に対して移動や回転を制限するための Input System アクション。他の軸のコンストレイントと組み合わせて、平面に対して制限することもできます。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは C キーにバインディングされています。 |
Z Constraint Action | マウスの移動時やリセット時に、Z 軸に対して移動や回転を制限するための Input System アクション。他の軸のコンストレイントと組み合わせて、平面に対して制限することもできます。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは Z キーにバインディングされています。 |
Reset Action | (有効な操作モードに応じて) 操作対象デバイスの位置や回転をリセットするための Input System アクション。ButtonControl である必要があります。位置を Vector3.zero に、回転を Quaternion.identity にリセットします。軸のコンストレイントと組み合わせることができます (上記の 3 つのアクションを参照)。 |
Toggle Cursor Lock Action | 押下時にゲームウィンドウのカーソルロックモードを切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは \ キーにバインディングされています。 |
Toggle Device Position Target Action | 押下時にキーボード入力からの移動を切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 3 キーにバインディングされています。 |
Toggle Primary 2D Axis Target Action | 押下時にコントローラーの Axis2DTargets.Primary2DAxis を操作できるように切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 1 キーにバインディングされています。 |
Toggle Secondary 2D Axis Target Action | 押下時にコントローラーの Axis2DTargets.Secondary2DAxis を操作できるように切り替えるための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 2 キーにバインディングされています。 |
Axis 2D Action | 操作対象のコントローラーデバイスが備えている 1 つ以上の 2D 軸コントロールの値を制御するための Input System アクション。InputActionType.Value Vector2Control である必要があります。上記の 2 つのトグルアクションはシミュレート対象コントローラーの 2D 軸コントロールを操作できるようにし、このアクションはコントローラーデバイスの操作中に実際にそれらの値を制御します。 通常はキーボードの WASD にバインディングされ、コントローラー上のプライマリまたはセカンダリ 2D 軸コントロールを制御します。 |
Resting Hand Axis 2D Action | コントローラーデバイスの操作が片方の手に集中しているときに、他方の手で 1 つ以上の 2D 軸コントロールを制御するための Input System アクション。InputActionType.Value Vector2Control である必要があります。典型的には水平方向のコンポーネントとしてキーボードの Q と E にバインディングされ、コントローラーを 1 つだけ操作している反対側の手の 2D 軸コントロールを制御します。他方の手で操作するコントローラーの 2D 軸をすばやく同時に制御するために使用することができます。左手コントローラーのスティックに継続的な動作がバインディングされ、右手コントローラーのスティックに回転がバインディングされているといった典型的な状況では、主に左手のコントローラーで移動の操作ばかりが行われているときに、このアクションで回転を発生させることができます。 |
Grip Action | 操作対象のコントローラーデバイスが備えている Grip コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは G キーにバインディングされています。 |
Trigger Action | 操作対象のコントローラーデバイスが備えている Trigger コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションはマウス 1 (左マウスボタン) にバインディングされています。 |
Primary Button Action | 操作対象のコントローラーデバイスが備えている PrimaryButton コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは B キーにバインディングされています。 |
Secondary Button Action | 操作対象のコントローラーデバイスが備えている SecondaryButton コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは N キーにバインディングされています。 |
Menu Action | 操作対象のコントローラーデバイスが備えている Menu コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは M キーにバインディングされています。 |
Primary 2D Axis Click Action | 操作対象のコントローラーデバイスが備えている Primary2DAxisClick コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 4 キーにバインディングされています。 |
Secondary 2D Axis Click Action | 操作対象のコントローラーデバイスが備えている Secondary2DAxisClick コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 5 キーにバインディングされています。 |
Primary 2D Axis Touch Action | 操作対象のコントローラーデバイスが備えている Primary2DAxisTouch コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 6 キーにバインディングされています。 |
Secondary 2D Axis Touch Action | 操作対象のコントローラーデバイスが備えている Secondary2DAxisTouch コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 7 キーにバインディングされています。 |
Primary Touch Action | 操作対象のコントローラーデバイスが備えている PrimaryTouch コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 8 キーにバインディングされています。 |
Secondary Touch Action | 操作対象のコントローラーデバイスが備えている SecondaryTouch コントロールを制御するための Input System アクション。ButtonControl である必要があります。XR Device Simulator サンプルのプレハブでは、このアクションは 9 キーにバインディングされています。 |
Camera Transform | Camera を含む Transform 。通常は XR Origin の "Head" です。未設定の場合は、自動で Camera.main に設定されます。 |
Keyboard Translate Space | キーボード入力による移動に適している座標空間。 |
Local | Keyboard Translate Space を Local に設定すると、コントローラーや HMD の座標空間を基準とし、それら自体の回転を考慮して移動を適用します。コントローラー自体の位置を基準に、カメラから独立してコントローラーを動かします。 |
Parent | Keyboard Translate Space を Parent に設定すると、親を基準としてコントローラーや HMD の移動を適用します。オブジェクトが親を持たない、つまりルートオブジェクトの場合は、親の座標空間はワールド座標空間と同じです。これは Local の場合と同じですが、オブジェクト自体の回転が考慮される点が異なります。 |
Screen | Keyboard Translate Space を Screen に設定すると、画面を基準としてコントローラーや HMD の移動を適用します。カメラの位置を基準として、コントローラーの向きとは独立にコントローラーを動かします。 |
Mouse Translate Space | マウス入力による移動に適している座標空間。 |
Local | Mouse Translate Space を Local に設定すると、コントローラーや HMD の座標空間を基準とし、それら自体の回転を考慮して移動を適用します。コントローラー自体の位置を基準に、カメラから独立してコントローラーを動かします。 |
Parent | Mouse Translate Space を Parent に設定すると、親を基準としてコントローラーや HMD の移動を適用します。オブジェクトが親を持たない、つまりルートオブジェクトの場合は、親の座標空間はワールド座標空間と同じです。これは Local の場合と同じですが、オブジェクト自体の回転が考慮される点が異なります。 |
Screen | Mouse Translate Space を Screen に設定すると、画面を基準としてコントローラーや HMD の移動を適用します。カメラの位置を基準として、コントローラーの向きとは独立にコントローラーを動かします。 |
Keyboard X Translate Speed | キーボード入力により発動する場合の X 軸での (左右への) 移動スピード。 |
Keyboard Y Translate Speed | キーボード入力により発動する場合の Y 軸での (上下への) 移動スピード。 |
Keyboard Z Translate Speed | キーボード入力によって発動する場合の Z 軸での (前後への) 移動スピード。 |
Mouse X Translate Sensitivity | マウス入力によって発動する場合の X 軸での (左右への) 移動の感度。 |
Mouse Y Translate Sensitivity | マウス入力によって発動する場合の Y 軸での (上下への) 移動の感度。 |
Mouse Scroll Translate Sensitivity | マウススクロール入力によって発動する場合の Z 軸での (前後への) 移動の感度。 |
Mouse X Rotate Sensitivity | マウス入力によって発動する場合の X 軸に沿った回転 (ピッチ) の感度。 |
Mouse Y Rotate Sensitivity | マウス入力によって発動する場合の Y 軸に沿った回転 (ヨー) の感度。 |
Mouse Scroll Rotate Sensitivity | マウススクロール入力によって発動する場合の Z 軸に沿った回転 (ロール) の感度。 |
Mouse Y Rotate Invert | マウス入力で回転する際にマウス入力の Y 軸を反転させるかどうかを示す Boolean 値。false 値 (デフォルト) は、マウスを上下に動かして上下にピッチさせる一般的な FPS スタイルを表します。true 値は、マウスを上下に動かすとピッチが下上に回転するフライトコントロールのスタイルを表します。 |
Desired Cursor Lock Mode | CursorLockMode.None から切り替える任意のカーソルロックモード。 |
Locked | Desired Cursor Lock Mode を Locked に設定すると、CursorLockMode.None とゲームウィンドウの中心でカーソルをロックするモードを切り替えます。 |
Confined | Desired Cursor Lock Mode を Confined に設定すると、CursorLockMode.None とカーソルをゲームウィンドウ内に限定するモードを切り替えます。 |