【问题标题】: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 以使您的项目运行得更快。