0 votes
by (140 points)

前提提要

  1. 我想实现的功能
    自适应准心大小,自动缩放。使得准心无论多远,在看起来都保持一样的大小。

    这应该是vr中常见的设计,在官方的demo中使用头盔准心也有这个示例,但是手柄的准心没有且官方的demo的数值是填进代码中的,而我想通过准心位置并在初始化的时候进行自动计算,同时实现手柄准心的自适应。

  2. 目前的代码和对象层级
    可以说基本和demo一致。

    1. 对象层级
      enter image description here
    2. 逻辑代码
      enter image description here
      enter image description here

问题

  1. 我的这个设计是否合理,有没有更好的思路,能不能帮我优化一下?

  2. 官方的sdk一定程度的影响了我们脚本的初始化,我能不能直接修改sdk的内容,这会不会造成什么影响?以及官方这个设计是否合理?

    1. 可以看到我控制器部分将头盔和手柄的距离计算分成了两部分,
      enter image description here
      本来是可以直接一段代码的,但是折腾了我一天。
      这里对于手柄部分的初始化我是物体坐标+局部坐标计算的,因为手柄在初始化的时候其层级目录下的子对象的transform.position,都被清零了。
      enter image description hereenter image description hereenter image description here

    2. 花了一些时间,我通过断点发现原因是Pvr_Controller在OnApplicationPause的时候把手柄的Scale直接赋值为Vector3.zero了。
      enter image description here
      我想知道我能不能在这里把这块代码换掉,换成隐藏模型,而不是影响这个初始化的数值?这有没有什么影响?我怕这里的缩放是有什么硬件需求,但是总觉得影响初始化好像不是很合理?

完。

1 Answer

0 votes
by (55.5k points)

开发者您好,

  1. 我们不建议您修改SDK中的脚本,可能会影响原本的逻辑。

  2. SDK有一个根据物理射线碰撞检测调节dot大小的功能,您可以参考一下。需要勾选下图中的Length Adaptive Ray选项,然后可以参考Pvr_Controller Demo这个脚本或者进行重写。

enter image description here

...