Как обновить ваш проект Unity Input до SteamVR 2.0? - PullRequest
0 голосов
/ 07 октября 2018

У меня есть несколько сцен Unity, которые хорошо работали с предыдущей версией плагина SteamVR, так как есть новая версия плагина «SteamVR Unity Plugin 2.0», мой код больше не работает.

https://steamcommunity.com/games/250820/announcements/detail/1696059027982397407

Я удалил папку «SteamVR» перед импортом новой, как сказано в документации.

Но я получаю следующие ошибки:

error CS0246: The type or namespace name `SteamVR_Controller' could not be found. Are you missing an assembly reference?
error CS0246: The type or namespace name `SteamVR_TrackedController' could not be found. Are you missing an assembly reference?

Так что я вижу, что этоклассы устарели:

private SteamVR_Controller.Device device;
private SteamVR_TrackedController controller;
controller = GetComponent<SteamVR_TrackedController>();

Каков новый способ получения Ввода по коду с помощью плагина SteamVR 2.0?

1 Ответ

0 голосов
/ 13 октября 2018

Чтобы перейти на SteamVR 2.0, я проделал следующие шаги:

1) Удалите папку «SteamVR», а затем импортируйте плагин «SteamVR» из хранилища активов Unity.

2) Удалите предыдущий объект [CameraRig] из ваших сцен и перетащите новый, расположенный на: «SteamVR / Prefabs»

3) Проверьте наличие сценария «Steam VR_Behaviour_Pose» на объектах «Контроллер (слева)» и «Контроллер (справа)» enter image description here enter image description here

там в поле «Pose Action» и «Input Source» должно быть:

Контроллер (слева)

PoseДействие : SkeletonLeftHand

Источник входного сигнала : Левая рука

Контроллер (правый)

Действие позы : SkeletonRightHand

Источник ввода : правая рука

4) Добавить сценарий руки к вашему "контроллеру (слева) объекты "и" контроллер (справа) ":

enter image description here

5) Добавьте свой собственный скрипт в ваши объекты «Контроллер (слева)» и «Контроллер (справа)», в моем случае «HTC Vivie Input»скрипт.

enter image description here

6) Убедитесь, что у вас нет ошибок компиляции, в этом случае вы должны увидеть«SteamVR Input» и «SteamVR Input Live View» в меню окна из Unity, enter image description here

7) По умолчанию, например, кнопка меню не работаетсодержать любое связанное с действием или положение сенсорной панели, поэтому откройте меню «Вход SteamVR» и добавьте действия:

  • сенсорная панель

  • TouchPos

  • Кнопка Menu

enter image description here \ enter image description here enter image description here enter image description here

8) Нажмите кнопку «Открыть интерфейс привязки» во время работы службы SteamVR и измените текущую привязку

Связать «Меню» с действием «MenuButton».

enter image description here

Ассоциирование «Touch» с действием «touchPad».

Ассоциирование «Position» с действием «touchPos».

enter image description here

Затем нажмите кнопку Сохранить и сгенерировать из меню «Вход SteamVR»

enter image description here

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

...