Google Cardboard - 如何检测对象的焦点?

时间:2016-02-20 10:37:06

标签: unity3d focus google-cardboard virtual-reality

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

enter image description here

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

如何检测对象的焦点?

1 个答案:

答案 0 :(得分:2)

实际上你可以自己制作剧本,这很简单。

您可以使用主摄像头中的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,以使您的项目运行得更快。