SteamVR plugin の使用法の備忘録になります。
HMDの動き反映
IntaractionSystem/core/Prefabs/PlayerをHierarchyに入れるだけでOK
HMDの位置がPlayerに反映される
コントローラのボタン取得
ボタンに応じた処理をするには、ボタンの名前と押されたときのブールアクションをつなげる必要がある
window/steamVRinput内のOpen binding UIから各ボタンについているブールアクション名を見れる。
トリガーに クリック: GarbPinchとついている場合
//トリガーの状態を記録する変数
[SerializeField] SteamVR_Action_Boolean actionToHaptic = SteamVR_Actions._default.GrabPinch;
//トリガー押したときにする処理
if (actionToHaptic.GetStateDown(SteamVR_Input_Sources.LeftHand)){/*処理*/}
で処理を行える。
stateDownの代わりにstateUpでボタンが離されたか、lastStateDownで1フレーム前で押されたか、lastStateUpで1フレーム前に離されたか、などがある。
オブジェクトを持つ
「Rigidbody」,「SteamVR/InteractionSystem/Core/Scriptsの Interactable ,Throwableをオブジェクトにアタッチする。
//掴まれる予定のオブジェクトにアタッチする
//離された時
private void OnHandHoverEnd(Hand hand)
{
Debug.Log("OnHandHoverEnd:" + gameObject.name + "/handType:" + hand.handType);
}
//掴まれた時
private void OnAttachedToHand(Hand hand)
{
Debug.Log("OnAttachedToHand:" + gameObject.name + "/handType:" + hand.handType);
GetComponent<Collider>().isTrigger = true;//あたり判定を透過に変更する
}
テレポート機能追加
1Assets/SteamVR/InteractionSystem/Teleport/Prefabs/Teleporting をhierarchyに入れる。
→コントローラからガイドが出てテレポートが可能になる
2 テレポートしたい場所にTeleportAreaを付ける テレポートしたくない場所にはTeleportAreaを付けない