脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

Unityの外部コントローラ入力の取得

Unityで外部コントローラの入力を取得する方法です

f:id:portaltan:20160331172411p:plain

ボタン入力

OVRInput.GetUp(OVRInput.Button.One)    # Aボタン
OVRInput.GetUp(OVRInput.Button.Two)    # Xボタン
OVRInput.GetUp(OVRInput.Button.Three)  # Yボタン
OVRInput.GetUp(OVRInput.Button.Four)   # Bボタン
  • 帰り値はboolです
  • ボタンを押して話した瞬間にtrueが返ってきます
  • 公式のドキュメントと配置が違いますが、コントローラによって割り当てが違うのかもしれません
    • ちなみに私が使っているコントローラは以下のMADCATZのコントローラです

十字キー入力

OVRInput.Get(OVRInput.Button.DpadUp)    # 上キー
OVRInput.Get(OVRInput.Button.DpadLeft)  # 左キー
OVRInput.Get(OVRInput.Button.DpadRight) # 右キー
OVRInput.Get(OVRInput.Button.DpadDown)  # 下キー
  • 返り値はboolです

3Dスティック入力

OVRInput.GetDown (OVRInput.Button.PrimaryThumbstickUp)   # 左スティックが上に倒された場合にtrue
OVRInput.GetDown (OVRInput.Button.PrimaryThumbstickDown) # 左スティックが下に倒された場合にtrue
OVRInput.GetDown (OVRInput.Button.PrimaryThumbstickLeft)   # 左スティックが左に倒された場合にtrue
OVRInput.GetDown (OVRInput.Button.PrimaryThumbstickRight) # 左スティックが右に倒された場合にtrue

# UnityのInputマネージャーで設定してある場合は以下でもOK
Input.GetAxis ("Vertical")   # 縦軸をFloatで返す
Input.GetAxis ("Horizontal") # 横軸をFloatで返す
  • floatはスティックの傾きによって、-1から1までの値を返します

キーにかかわらず何かキー入力あった時に処理を行いたい場合

ボタンや十字キーなどはOVRInput.Button.Anyという何か押されたらtrueを返すメソッドがあるのですが、3Dスティックには方向に関わらずに倒されたらtrueを返すというメソッドはないようです。
なので私は以下のようにメソッドとして作ってしまっています

bool anyKeyPushed ()
{
	if (Input.anyKey || Input.GetAxis("Vertical") != 0 || Input.GetAxis("Horizontal") != 0 || OVRInput.Get(OVRInput.Button.Any)){
		return true;
	}
	return false;
}