ovr_GetInputStateの呼び出しによりポーリングできます。double displayMidpointSeconds = ovr_GetPredictedDisplayTime(session, frameIndex);
ovrTrackingState trackState = ovr_GetTrackingState(session, displayMidpointSeconds, ovrTrue);
ovrPosef handPoses[2];
ovrInputState inputState;
// Grab hand poses useful for rendering hand or controller representation
handPoses[ovrHand_Left] = trackState.HandPoses[ovrHand_Left].ThePose;
handPoses[ovrHand_Right] = trackState.HandPoses[ovrHand_Right].ThePose;
if (OVR_SUCCESS(ovr_GetInputState(session, ovrControllerType_Touch, &inputState)))
{
if (inputState.Buttons & ovrButton_A)
{
// Handle A button being pressed
}
if (inputState.HandTrigger[ovrHand_Left] > 0.5f)
{
// Handle hand grip...
}
}
ovrInputState構造体には、以下のフィールドが含まれています。| フィールド | 型 | 説明 |
|---|---|---|
`TimeInSeconds` | `double` | コントローラーの状態が最後に更新されたシステム時刻。 |
`ControllerType` | `unsigned int` |
`ovrControllerType`で記述されます。現在どのコントローラータイプが接続されているかを示します。たとえば、`ovrControllerType_LTouch`ビットをチェックすると、左Touchコントローラーが接続されていることを確認できます。オプションは次のとおりです:
|
`Buttons` | `unsigned int` | ボタンの状態は`ovrButton`で記述されます。ボタンを押すと、対応するビットが設定されます。 |
`Touches` | `unsigned int` | `ovrTouch`でインデックス化されたボタンおよびセンサーのタッチ値。ユーザーの指がボタンに触れている場合、またはユーザーの指がコントローラーで検出可能なジェスチャー状態にある場合、対応するビットが設定されます。 |
`IndexTrigger[2]` | `float` | 左右の指のトリガー値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fです。値が1.0の場合は、トリガーが完全に押されたことを意味します。 |
`HandTrigger[2]` | `float` | 左右のグリップボタン値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fです。ハンドトリガーは、アイテムをつかむときによく使用されます。値が1.0の場合は、トリガーが完全に押されたことを意味します。 |
`Thumbstick[2]` | `ovrVector2f` | 水平および垂直のサムスティック軸値(`ovrHand_Left`と`ovrHand_Right`)。範囲は-1.0fから1.0fです。デッドゾーンはAPIにより自動的に適用されるので、開発者が明示的に処理する必要はありません。 |
`IndexTriggerNoDeadzone[2]` | `float` | 左右の指のトリガー値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fで、デッドゾーンはありません。値が1.0の場合は、トリガーが完全に押されたことを意味します。 |
`HandTriggerNoDeadzone[2]` | `float` | 左右のグリップボタン値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fで、デッドゾーンはありません。グリップボタン(以前の名称はハンドトリガー)は、アイテムをつかむときによく使用されます。値が1.0の場合は、ボタンが完全に押されたことを意味します。 |
`ThumbstickNoDeadzone[2]` | `ovrVector2f` | 水平および垂直のサムスティック軸値(`ovrHand_Left`と`ovrHand_Right`)。範囲は-1.0fから1.0fで、デッドゾーンはありません。 |
`IndexTriggerRaw[2]` | `float` | 未加工の左右のグリップボタン値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fで、デッドゾーンまたはフィルターはありません。値が1.0の場合は、トリガーが完全に押されたことを意味します。 |
`HandTriggerRaw[2]` | `float` | 左右のグリップボタン値(`ovrHand_Left`と`ovrHand_Right`)。範囲は0.0から1.0fで、デッドゾーンまたはフィルターはありません。グリップボタン(以前の名称はハンドトリガー)は、アイテムをつかむときによく使用されます。値が1.0の場合は、ボタンが完全に押されたことを意味します。 |
`ThumbstickRaw[2]` | `ovrVector2f` | 水平および垂直のサムスティック軸値(`ovrHand_Left`と`ovrHand_Right`)。範囲は-1.0fから1.0fで、デッドゾーンまたはフィルターはありません。 |
ovrInputState構造体には、コントローラーのボタン、サムスティック、トリガー、タッチセンサーの現在の状態が含まれています。ボタンが押されているかどうかは、いずれかのボタン定数でチェックできます。上記の例では、ovrButton_Aが押されています。Touchコントローラーで使用可能なバイナリボタンの一覧を以下に示します:| ボタン定数 | 説明 |
|---|---|
ovrButton_A | 右TouchコントローラーのAボタン。 |
ovrButton_B | 右TouchコントローラーのBボタン。 |
ovrButton_RThumb | 右Touchコントローラーのサムスティックボタン。 |
ovrButton_X | 左TouchコントローラーのXボタン。 |
ovrButton_Y | 左TouchコントローラーのYボタン。 |
ovrButton_LThumb | 左Touchコントローラーのサムスティックボタン。 |
ovrButton_Enter | 左TouchコントローラーのEnterボタン。これは、XboxコントローラーのStartボタンに相当します。 |