如何统一获取从 Daydream 控制器到指向游戏对象的距离?

How to get the distance from daydream controller to a pointed game object in unity?

按照 google-vr 示例,我设法将摄像机和控制器添加到我的场景中。 接下来我需要做的是获取我的控制器与场景中任何尖头游戏对象之间的距离。 找了一段时间,没有找到教程,也没有关于如何获取距离的资料。

那么,有没有关于如何做到这一点的最新工作教程? (互联网上的许多教程已经过时,因为 google 更新其 API 如此频繁) 或者它实际上是一个简单的任务,即我可以从 GvrPointerInputModule.Pointer / GvrLaserPointer / 其他一些 GVR class 获得价值? 提前致谢~

您需要从控制器进行光线投射并测量命中位置与光线投射原点之间的差异。我认为 unity raycasts 可以 return 这个内置的距离。

正如我所怀疑的那样,GvrLaserPointer 就是答案。 如果其 CurrentRaycastResult.gameObject 不为空,则激光与某物相交。然后,我们可以从CurrentRaycastResult.worldPosition中得到交点。 利用这一点,我们可以很容易地计算出距离。

注意:以防有人像我以前那样使用此方法失败。检查你的光线投射组。确保 GVRPointerPhysicsRaycaster 中的 Raycaster Event Mask 仅包含所需的图层。如果屏幕 space 中有任何 canvas,请检查 Graphic Raycaster 中的 Blocking Mask。默认情况下为 Everything,您的指针可能会一直与 canvas 相交,从而导致 "weird" 交点。这是我的问题的原因,为了解决它,我 select Nothing for Blocking Mask,瞧。