How do I get input from the Oculus remote?

Refresh

December 2018

Views

5k time

4

I am trying to figure out how to use the oculus remote in Unity3D 5.3.4f. I've found some documentation about OVR mapping, but I can't seem to figure it out.

What I want to achieve is when the middle button(Button.One) is clicked.

What I now use is this line of code

if (OVRInput.GetUp(OVRInput.Button.One))
    {
        Debug.Log("remote click");
    }

But when I run the application I get this error.

NullReferenceException: Object reference not set to an instance of an object OVRInput.GetUp (Button virtualMask, Controller controllerMask) (at Assets/OVR/Scripts/OVRInput.cs:600) menuButtonHandler.Update () (at Assets/menuButtonHandler.cs:136)

Which can be found in this script

/// <summary>
/// Gets the current up state of the given virtual button mask with the given controller mask.
/// Returns true if any masked button was released this frame on any masked controller and no other masked button is still down this frame.
/// </summary>
public static bool GetUp(Button virtualMask, Controller controllerMask = Controller.Active)
{
    return OVRManager.input.GetResolvedButtonUp(virtualMask, RawButton.None, controllerMask);
}

Has anyone used to Oculus remote controller before in unity and can help me out?

Thank you,

Johan

2 answers

1

Для работы с входом в версии Unity 2017.1.1 вы должны сначала загрузить «Oculus Утилиты для единства»

Oculus Utilities пакет активов для Unity

Тогда вы должны импортировать пакет в Unity, Перейти к: - «Актив» -> «Импорт пакета» -> «Пользовательский пакет» Пакет Oculus Utility

Просматривайте «Oculus Utilities скачать» введите описание изображения здесь

Нажмите на импорт

Вызов функции «OVRInput.update ()» перед вызовом входной проверки функций.

void Update ()
    {
        OVRInput.Update(); // Call before checking the input

        if (OVRInput.Get(OVRInput.Button.DpadLeft)) {
            print("left button pressed");
        }
        if (OVRInput.Get(OVRInput.Button.DpadRight)) {
            print("right button pressed");
        }
        if (OVRInput.Get(OVRInput.Button.One)) {
            print("round button pressed");
        }
    }

Для получения дополнительной информации о OVRInput проверить эту ссылку

OVRInput

1

Один из объектов этого метода, вероятно, необходимо инициализировать, прежде чем сделать вызов GetUp ().

Внимательно посмотрите на код инициализации, а также любые образцы вы можете иметь - я уверен, вы найдете что-то недостающее после не слишком много смотрит. Я не знаком с API для Unity, но если они что-нибудь, как компьютер или мобильный C ++ API,, скорее всего, вы пропустили шаг, или забыл запустить службу VR.

MMc