【问题标题】:How to get the distance from daydream controller to a pointed game object in unity?如何统一获得从白日梦控制器到指向游戏对象的距离?
【发布时间】:2020-05-20 10:39:30
【问题描述】:

按照 google-vr 示例,我设法将相机和控制器添加到我的场景中。 我需要做的下一件事是获取我的控制器与场景中任何指向的游戏对象之间的距离。 搜索了一段时间,我找不到任何关于如何获得距离的教程和信息。

那么,有没有关于如何做到这一点的最新工作教程? (由于谷歌频繁更新其API,互联网上的许多教程已经过时) 或者它实际上是一个简单的任务,即我可以从 GvrPointerInputModule.Pointer / GvrLaserPointer / 其他一些 GVR 类中获取值? 先谢谢了~

【问题讨论】:

  • 据我回忆,控制器不是 3D 空间中的对象,而是更类似于存在于屏幕空间中的鼠标光标。所以距离就是从主摄像头到...的距离,无论ScreenPointToRay相交。

标签: unity3d daydream


【解决方案1】:

您需要从控制器进行光线投射并测量命中位置与光线投射来源之间的差异。我认为统一光线投射可以返回这个内置距离。

【讨论】:

    【解决方案2】:

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

    注意:以防万一有人用这种方法失败,就像我以前做的那样。检查您的光线投射组。确保GVRPointerPhysicsRaycaster 中的Raycaster Event Mask 仅包含所需的层。如果您在屏幕空间中有任何画布,请在Graphic Raycaster 中检查其Blocking Mask。默认情况下它是Everything,你的指针可能会一直与画布相交,从而产生“奇怪”的交点。这是我的问题的原因,为了解决这个问题,我选择Nothing 代替Blocking Mask,然后瞧。

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多