如何从Oculus遥控器获取输入?

时间:2016-05-03 09:38:27

标签: c# unity3d oculus

我试图弄清楚如何在Unity3D 5.3.4f中使用oculus远程。我发现了一些关于OVR映射的documentation,但我似乎无法弄明白。

我想要实现的是点击中间按钮(Button.One)。

我现在使用的是这行代码

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

但是当我运行应用程序时,我收到了这个错误。

  

NullReferenceException:未将对象引用设置为对象的实例   OVRInput.GetUp(Button virtualMask,Controller controllerMask)(在Assets / OVR / Scripts / OVRInput.cs:600)   menuButtonHandler.Update()(在Assets / menuButtonHandler.cs:136)

可在此脚本中找到

/// <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);
}

有没有人在团结之前习惯Oculus遥控器并且可以帮助我?

谢谢,

约翰

2 个答案:

答案 0 :(得分:1)

在进行GetUp()调用之前,可能需要初始化该方法中的一个对象。

仔细查看您的初始化代码,以及您可能拥有的任何样本 - 我敢打赌,在不太看的情况下,您会发现遗漏的东西。我不熟悉Unity API,但如果它们与PC或移动C ++ API类似,那么您可能错过了一步,或者忘记启动VR服务。

答案 1 :(得分:1)

要使用Unity版2017.1.1中的输入,您首先要下载&#34; Oculus Utilities for Unity&#34;

Oculus Utilities asset package for Unity

然后你必须在Unity中导入包, 去: - &#34;资产&#34; - &GT; &#34;导入包&#34; - &GT; &#34;定制包&#34; Oculus Utility package

浏览你的&#34; Oculus Utilities下载&#34; enter image description here

点击导入

调用函数&#34; OVRInput.update()&#34;在调用输入检查函数之前。

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