開発

ボタンの状態

入力ボタンの状態は、コンピューターに届くHID割り込みに基づいて報告され、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コントローラーが接続されていることを確認できます。オプションは次のとおりです:
  • `ovrControllerType_None` (0x0000)
  • `ovrControllerType_LTouch` (0x0001)
  • `ovrControllerType_RTouch` (0x0002)
  • `ovrControllerType_Touch` (0x0003)
  • `ovrControllerType_Remote` (0x0004)
  • `ovrControllerType_XBox` (0x0010)
`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ボタンに相当します。
ナビゲーションロゴ
日本語
© 2026 Meta