Чтобы перейти на SteamVR 2.0, я проделал следующие шаги:
1) Удалите папку «SteamVR», а затем импортируйте плагин «SteamVR» из хранилища активов Unity.
2) Удалите предыдущий объект [CameraRig] из ваших сцен и перетащите новый, расположенный на: «SteamVR / Prefabs»
3) Проверьте наличие сценария «Steam VR_Behaviour_Pose» на объектах «Контроллер (слева)» и «Контроллер (справа)»
![enter image description here](https://i.stack.imgur.com/0iAFy.png)
там в поле «Pose Action» и «Input Source» должно быть:
Контроллер (слева)
PoseДействие : SkeletonLeftHand
Источник входного сигнала : Левая рука
Контроллер (правый)
Действие позы : SkeletonRightHand
Источник ввода : правая рука
4) Добавить сценарий руки к вашему "контроллеру (слева) объекты "и" контроллер (справа) ":
![enter image description here](https://i.stack.imgur.com/82TuL.png)
5) Добавьте свой собственный скрипт в ваши объекты «Контроллер (слева)» и «Контроллер (справа)», в моем случае «HTC Vivie Input»скрипт.
![enter image description here](https://i.stack.imgur.com/yHp6c.png)
6) Убедитесь, что у вас нет ошибок компиляции, в этом случае вы должны увидеть«SteamVR Input» и «SteamVR Input Live View» в меню окна из Unity, ![enter image description here](https://i.stack.imgur.com/yGqfH.png)
7) По умолчанию, например, кнопка меню не работаетсодержать любое связанное с действием или положение сенсорной панели, поэтому откройте меню «Вход SteamVR» и добавьте действия:
сенсорная панель
TouchPos
Кнопка Menu
\
![enter image description here](https://i.stack.imgur.com/Tf6OS.png)
8) Нажмите кнопку «Открыть интерфейс привязки» во время работы службы SteamVR и измените текущую привязку
Связать «Меню» с действием «MenuButton».
![enter image description here](https://i.stack.imgur.com/8REAF.png)
Ассоциирование «Touch» с действием «touchPad».
Ассоциирование «Position» с действием «touchPos».
![enter image description here](https://i.stack.imgur.com/w484e.png)
Затем нажмите кнопку Сохранить и сгенерировать из меню «Вход SteamVR»
![enter image description here](https://i.stack.imgur.com/vcJgK.png)
9) Откройте свой пользовательский скрипт (в моем случае «HTC Vivie Input») и добавьте свой код, например:
using UnityEngine;
using Valve.VR;
using Valve.VR.InteractionSystem;
public class HTCVivieInput : MonoBehaviour {
private Hand hand;
// Use this for initialization
void Start () {
hand = gameObject.GetComponent<Hand>();
}
public Vector2 getTrackPadPos()
{
SteamVR_Action_Vector2 trackpadPos = SteamVR_Input._default.inActions.touchPos;
return trackpadPos.GetAxis(hand.handType);
}
public bool getPinch()
{
return SteamVR_Input._default.inActions.GrabPinch.GetState(hand.handType);
}
public bool getPinchDown()
{
return SteamVR_Input._default.inActions.GrabPinch.GetStateDown(hand.handType);
}
public bool getPinchUp()
{
return SteamVR_Input._default.inActions.GrabPinch.GetStateUp(hand.handType);
}
public bool getGrip()
{
return SteamVR_Input._default.inActions.GrabGrip.GetState(hand.handType);
}
public bool getGrip_Down()
{
return SteamVR_Input._default.inActions.GrabGrip.GetStateDown(hand.handType);
}
public bool getGrip_Up()
{
return SteamVR_Input._default.inActions.GrabGrip.GetStateUp(hand.handType);
}
public bool getMenu()
{
return SteamVR_Input._default.inActions.MenuButton.GetState(hand.handType);
}
public bool getMenu_Down()
{
return SteamVR_Input._default.inActions.MenuButton.GetStateDown(hand.handType);
}
public bool getMenu_Up()
{
return SteamVR_Input._default.inActions.MenuButton.GetStateUp(hand.handType);
}
public bool getTouchPad()
{
return SteamVR_Input._default.inActions.Teleport.GetState(hand.handType);
}
public bool getTouchPad_Down()
{
return SteamVR_Input._default.inActions.Teleport.GetStateDown(hand.handType);
}
public bool getTouchPad_Up()
{
return SteamVR_Input._default.inActions.Teleport.GetStateUp(hand.handType);
}
public Vector3 getControllerPosition()
{
SteamVR_Action_Pose[] poseActions = SteamVR_Input._default.poseActions;
if (poseActions.Length > 0)
{
return poseActions[0].GetLocalPosition(hand.handType);
}
return new Vector3(0, 0, 0);
}
public Quaternion getControllerRotation()
{
SteamVR_Action_Pose[] poseActions = SteamVR_Input._default.poseActions;
if (poseActions.Length > 0)
{
return poseActions[0].GetLocalRotation(hand.handType);
}
return Quaternion.identity;
}
}
10) При создании релизной сборки замените привязки по умолчанию из меню «Связующий интерфейс»
![enter image description here](https://i.stack.imgur.com/9iayg.png)