トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【OVR】コントローラーを音から振動させる【Unity】

OculusIntegrationを入れたうえでのコントローラー振動の方法は2種類あるようです。

推奨と非推奨。 

こちらのスライドで知りました。

OculusQuest完全に理解した。 / Oculus Quest Completely Understood. - Speaker Deck

非推奨のほうでは音からコントローラーの振動を作れるそうです!おもしろそう!やってみたい。

Oculusの公式リファレンス

developer.oculus.com

OVRInput(推奨)

振動はこんな感じです。

OVRInput.SetControllerVibration(1, 1, OVRInput.Controller.RTouch);

これを書くと2秒間ブウウウウってなります。

 

リファレンスGoogle翻訳

static void OVRInput.SetControllerVibration(周波数、振幅、Controller controllerMask)
振幅と周波数の期待値は、0から1までの範囲の任意の値です。 値が大きいほど、コントローラーの振動が強くなります。 振動を終了させるには、振幅と周波数の両方を0に設定します。コントローラの振動は、最後の入力から2秒後に自動的に終了します。

振動を終わらせたいタイミングで

OVRInput.SetControllerVibration(0, 0, OVRInput.Controller.RTouch);

みたいにしたらいい。

OVRHaptics(非推奨)

廃止予定の非推奨ですが、こちらの方法だとAudioClipの波形から振動を生成できます

f:id:bibinbaleo:20190627132044p:plain

音も同時に流してみました。

public class haptics : MonoBehaviour
{
    public AudioSource audiosource;
    OVRHapticsClip hapticsClip;

    void Start()
    {
        hapticsClip = new OVRHapticsClip(audiosource.clip);
    }
    void Update()
    {
   
        if (OVRInput.GetDown(OVRInput.RawButton.A))
        {
           OVRHaptics.RightChannel.Mix(hapticsClip);
           audiosource.Play();
        }
    }
}

こりんさんの記事が詳しいですが、

OVRHaptics.RightChannel.Mix(hapticsClip);

sはいらないです。

framesynthesis.jp

qiita.com

どんな音がいいのか

いろいろ試してみましたが、ドアをどんどんたたく音とか殴る音とかかな?

壁ドンとか

 

f:id:bibinbaleo:20190627211515p:plain

最後に

OVRInputでは音からの生成できないのかな