【发布时间】:2016-06-27 13:02:18
【问题描述】:
我正在 Unity3D 中为一个 VR 项目实现凝视算法。到目前为止,我在这里发现的是使用 Physics.Raycast 并在每个按钮对象中添加 BoxCollider2D 组件来检测用户是否正在查看它。我想避免使用 Raycast,因为它很昂贵并且可能会产生性能问题,因为我需要处理非常复杂的 UI 结构。
我尝试使用光标锁定,但不幸的是它不适用于移动平台。
我还尝试使用相机视口中心来检查按钮对象的rect 是否包含由
Camera.main.ViewportToWorldPoint(new Vector3(0.5f,0.5f,Camera.main.nearClipPlane));
当按钮对象的矩形变换锚定为中间中心时,它可以正常工作。但是当它有一些其他设置或者如果按钮倾斜一点(在世界空间画布中)时不起作用。而且我不太熟悉 rect 变换的工作原理以及如何在世界空间中找到它的确切位置。
有人知道解决办法吗?或者有没有其他方法可以做到这一点?
我们非常感谢所有类型的帮助。
【问题讨论】:
-
我不知道你是否在做 oculus,但无论如何这是一本好书 developer.oculus.com/blog/unitys-ui-system-in-vr
-
我已经检查了 Unity 的示例项目,它是在 Event System 的 BaseRaycaster 类上实现的。
标签: c# unity3d unity5 unity3d-2dtools