【问题标题】:How to change scene using gaze in Windows Mixed Reality Toolkit on Unity?如何在 Unity 上的 Windows Mixed Reality Toolkit 中使用凝视改变场景?
【发布时间】:2018-02-13 05:09:10
【问题描述】:

使用 Windows HoloToolKit 和 Unity 2017,我设置了“菜单”场景并设置了“游览”场景。我只是在尝试进行基于注视的交互,该交互将从菜单推进到游览。

我觉得这不是太难,但我正在旋转我的轮子(而且我是 Unity 的初学者)。我基本上希望有一个 3D 立方体,上面写着“看这里”并触发下一个场景。

我只需要一个非常简单的用户体验,这样人们就可以戴上耳机,确切知道该做什么,观看视频,然后它会返回菜单。

【问题讨论】:

    标签: unity3d virtual-reality windows-mixed-reality


    【解决方案1】:

    虽然我对 HoloKit API 不太熟悉,但我会假设您的相机与玩家正在观看的位置对齐。在这种情况下,您可以从相机发送光线投射,然后检查它是否击中立方体。如果光线投射有,那么您可以更改场景,如下所示:

    public void Update()  {
        RaycastHit hit = null;
        if (Physics.Raycast(transform.position, transform.forward, hit) && hit.transform.gameObject.name == "cubeName") {
            SceneManager.LoadScene("nextScene");
        }
    }
    

    当然,您可能不希望立方体在他们看到它的那一刻立即加载场景。在这种情况下,您可以跟踪他们观看它的时间,然后在观看一定时间后更改场景:

    public float lookTime;
    public void Update()  {
        RaycastHit hit = null;
        if (Physics.Raycast(transform.position, transform.forward, hit) && hit.transform.gameObject.name == "cubeName") {
            lookTime += Time.deltaTime;
        }
        else {
            lookTime = 0;
        }
        if(lookTime > 1000) {
             SceneManager.LoadScene("nextScene");
        }
    }
    

    此脚本在附加到您的相机后,将从相机进行光线投射,并检查它所击中的内容是否名为 cubeName。然后,它将当前时间更改量添加到lookTime。当lookTime达到1000毫秒,也就是一秒时,会加载场景nextScene

    【讨论】:

    • 谢谢。我现在遇到了一个错误,我无法让耳机再与 Unity 一起使用。您的代码似乎可以正常工作,但我现在无法解决这个错误。
    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多