(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]



Unityで開発しているSteam向けVRゲームでコントローラーを振動させる方法【Unity】【Steam】【VR】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.1f1


はじめに

今回はUnityで開発しているSteam向けVRゲームでコントローラーを振動させる方法です!


Steamworks.NETの導入

まずプロジェクトにSteamworks.NETを導入するのですが、これをそのまま入れるより



Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。



なお上記のGitHubからプロジェクトを取得したら、

f:id:kan_kikuchi:20200706064531j:plain


Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。

f:id:kan_kikuchi:20191012075612j:plain



コントローラーを振動させる

さて本題のコントローラーを振動させる方法ですが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で設定されている物です。

f:id:kan_kikuchi:20200802100226j:plain
f:id:kan_kikuchi:20200802100236j:plain


あとはこの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

ただし、デバイスによって振動に若干の違いはある気がします。