冬乃Tech Blog

主にUnityでのC#コーディングで得た知見をまとめていく

OVRInputのコントローラ入力まとめ

いろんなサイトやブログにいくらでも載っているけど、欲しいものがまとまってるのは少ないのでここに貯めていく。
ちなみに公式のサイトはこちら→Oculus OVRInput
どうやらOVRInputはInput Mappingという入力の種類が複数あるらしく、それによってコードが変わってくるらしい(正直よくわからん)
ので、ここでは「Raw Mapping」の記法を載せていく。

トリガーの入力

  • 右手のトリガーボタンはOVRInput.RawButton.RIndexTriggerで取れる(戻り値はboolean)
    "Index"って人差し指って意味らしい。
    RIndexTriggerLIndexTriggerにすると左手の方をとれる。
    この前にGetDownやらGetUpとつけることで「押した時」や「離した時」の値が返ってくる。
OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger) ///右手トリガー押した時
OVRInput.Get(OVRInput.RawButton.RIndexTrigger)///右手トリガー押している間
OVRInput.GetUp(OVRInput.RawButton.RIndexTrigger) ///右手トリガー離した時
  • IndexTriggerHandTriggerにすると、中指らへんにあるハンドトリガー(?)の値が取れる。
OVRInput.GetDown(OVRInput.RawButton.RHandTrigger) ///右手ハンドトリガー押した時
OVRInput.Get(OVRInput.RawButton.RHandTrigger)///右手ハンドトリガー押している間
OVRInput.GetUp(OVRInput.RawButton.RHandTrigger) ///右手ハンドトリガー離した時
  • トリガーは0~1までのアナログ値も取れる(戻り値はfloat)
float analog = OVRInput.Get(OVRInput.RawAxis1D.RIndexTrigger)///右手トリガーの押し具合(-1~1)

ボタンの入力

  • A,B,X,YボタンはOVRInput.RawButton."ボタン"で取れる(戻り値はboolean)
    ABボタンは右コントローラ。XYボタンは左コントローラについてる。
OVRInput.GetDown(OVRInput.RawButton.A)///Aボタンを押した時
OVRInput.GetDown(OVRInput.RawButton.B)///Bボタンを押した時
  • こいつらもGetDownGetUpを使うと押している状態をそれぞれ取れる。
OVRInput.Get(OVRInput.RawButton.X)///Xボタンを押している間
OVRInput.GetUp(OVRInput.RawButton.Y)///Yボタンを離した時

スティック操作

Oculus Touchには親指の位置に立派なスティックがある。
当然傾けたりもできるが、押し込むことでボタンのような入力もできる。

  • 上下左右の動きの入力はOVRInput.RawButton.RThumbstick"方向"で取れる。
    左のスティックならLThumbStickにする。
OVRInput.Get(OVRInput.RawButton.RThumbstickUp)///右手スティック上
OVRInput.Get(OVRInput.RawButton.RThumbstickDown)///右手スティック下
OVRInput.Get(OVRInput.RawButton.LThumbstickRight)///左手スティック右
OVRInput.Get(OVRInput.RawButton.LThumbstickLeft)///左手スティック左
  • スティックの位置を二次元で取ることもできる。(戻り値はVector2)
Vector2 pos = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick)///定位置を原点としたx(-1~1),y(-1~1)の数値
  • UpRight等方向を示す部分を削ると、スティックを押しボタンとした入力が取れる。
OVRInput.GetDown(OVRInput.RawButton.RHandTrigger);///右手スティック押した
OVRInput.Get(OVRInput.RawButton.RHandTrigger);///右手スティック押している
OVRInput.GetUp(OVRInput.RawButton.LHandTrigger);///左手スティック離した

残りはそのうち追加していく