【问题标题】:Google Cardboard - How to detect focus on an object?Google Cardboard - 如何检测对象的焦点?
【发布时间】:2016-11-25 16:00:54
【问题描述】:

我尝试使用 google cardboard sdk 统一创建一个 VR 场景。我在场景中添加了一个立方体和 CardboardMain.prefab。有一个示例场景可以检测立方体上的焦点。它的层次结构视图是:

我不知道如何添加 GUIReticle 对象或像图像一样的预制件。

如何检测物体上的焦点?

【问题讨论】:

标签: unity3d focus google-cardboard virtual-reality


【解决方案1】:

其实你可以自己制作脚本,很简单。

您可以使用主摄像头中的RayCast 来检测用户是否在看您的对象。如果RayCast 击中了你的对象,那么它就会被聚焦。

例如:

using UnityEngine;
using System;

[RequireComponent(typeof(Collider))]
public class LookableObject : MonoBehaviour {

    [SerializeField]
    Transform cam; // This is the main camera.
    // You can alternately use Camera.main if you've tagged it as MainCamera

    bool focus; // True if focused

    Collider gazeArea; // Your object's collider

    public void Start () {
        gazeArea = GetComponent<Collider> ();
    }

    public void Update () {
        RaycastHit hit;

        if (Physics.Raycast (cam.position, cam.forward, out hit, 1000f)) {
            focus = (hit.collider == gazeArea);    
        } else {
            focus = false;
        }
    }
}

编辑:这只是一个例子。您可能希望编写一个脚本只执行一次 Raycast,而不是一遍又一遍地对每个对象执行 Raycast 以使您的项目运行得更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多