この記事でのバージョン
Unity 2019.4.14f1
Oculus Integration 20.1
はじめに
今回はUnityでOculus Quest(やQuest2)のコントローラーを振動させる方法の解説記事です!
なお、Oculus Integrationのインストールや、
Oculus Integration | Integration | Unity Asset Store |
以下の記事にあるVR上での手の表示等の導入部分は済んでいる前提なのであしからず。
また、コントローラーの入力受け取り方法については以下の記事を参照の事。
OVRInput
さっそくですがコントローラーを振動させるには
Oculus IntegrationのOVRInputというクラスを使います。
実装方法はSetControllerVibrationを実行するだけ。
なお、第1引数で振幅(振動の強さ?)で、第2引数で振動数(振動の大きさ?)を指定します。
//コントローラーを振動させる OVRInput.SetControllerVibration(frequency:0.1f, amplitude:0.1f);
なお、第3引数で振動させるコントローラーを指定する事も可能です。
(指定しないとアクティブなコントローラーが振動)
//左のコントローラーを振動させる OVRInput.SetControllerVibration(0.1f, 0.1f, OVRInput.Controller.LTouch); //右のコントローラーを振動させる OVRInput.SetControllerVibration(0.1f, 0.1f, OVRInput.Controller.RTouch);
ただし、振動時間は指定出来ないので、振動を止めたいタイミングで
SetControllerVibrationの両引数を0にして止める必要があります。
//コントローラーを振動を止める OVRInput.SetControllerVibration(0, 0);
例えばコルーチンで実装してみると以下のような感じになります。
/// <summary> /// Oculus Quest(やQuest2)のコントローラーを振動させる /// </summary> public static IEnumerator Vibrate(float duration = 0.1f, float frequency = 0.1f, float amplitude = 0.1f, OVRInput.Controller controller = OVRInput.Controller.Active) { //コントローラーを振動させる OVRInput.SetControllerVibration(frequency, amplitude, controller); //指定された時間待つ yield return new WaitForSeconds(duration); //コントローラーの振動を止める OVRInput.SetControllerVibration(0, 0, controller); }
//左のコントローラーを0.5秒間振動させる StartCoroutine(Vibrate(duration:0.5f, controller:OVRInput.Controller.LTouch));