この記事でのバージョン
Unity 2019.4.1f1
はじめに
今回はUnityで開発しているSteam向けVRゲームでコントローラーを振動させる方法です!
Steamworks.NETの導入
まずプロジェクトにSteamworks.NETを導入するのですが、これをそのまま入れるより
Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。
なお上記のGitHubからプロジェクトを取得したら、
Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。
コントローラーを振動させる
さて本題のコントローラーを振動させる方法ですがSteamVR_Action_Vibrationというクラスを使います。
//SteamVR_Action_Vibrationを使うのに必要に using Valve.VR;
//SteamVR_Action_Vibrationクラスを作成 SteamVR_Action_Vibration _hapicAction = SteamVR_Input.GetAction<SteamVR_Action_Vibration>("Haptic");
なお、SteamVR_Action_Vibrationを作成する時に使っている
Hapticという文字列はSteamVR Inputで設定されている物です。
あとはこのSteamVR_Action_VibrationのExecuteというメソッドを実行するだけで
指定のデバイスを振動させる事が出来ます。
//0.1秒の振動を実行 _hapicAction.Execute( secondsFromNow : 0, //振動が開始するまでの時間 durationSeconds : 0.1f, //振動時間 frequency : 0.00001f, //周波数 amplitude : 1, //振幅 inputSource : SteamVR_Input_Sources.LeftHand //振動させるデバイスの種類 );
しかもIndexやViveなど、どんなデバイスを使う場合でも上記のコードでOK。
ただし、デバイスによって振動に若干の違いはある気がします。