如何在凝视和激光之间切换?

时间:2018-08-08 15:23:37

标签: aframe google-cardboard oculus

我的VR实验的交互基于单击对象。我希望它可以在桌面上(使用鼠标),在纸板上(带有凝视光标)或3或6dof控制器(例如Oculus Go)工作。

如何根据可用信息进行切换?

这就是我现在拥有的:

<a-scene  antialias="true" cursor="rayOrigin:mouse">
  <a-entity laser-controls="hand: right"></a-entity>
...</a-scene>

这适用于台式机和OGO,但不适用于Cardboard。我相信我可以为注视光标添加一个<a-cursor>,但是它一直存在-我只希望当用户在Cardboard中时显示它。

这可能吗?我将如何去做呢?我是否可能需要编写一些JavaScript才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

如果您可以拥有<a-camera>实体,则可以创建一个自定义组件,该组件将仅在移动设备上添加保险丝光标。

您甚至可以进行如下设置:

<a-camera>
  <a-entity cursor-check></a-entity>
</a-camera>

,并在需要时将cursor添加到空实体。


检查您是否在移动设备上:

AFRAME.registerComponent("cursor-check", {
....
    if(!AFRAME.utils.device.isMobile()) return;

并在必要时添加光标组件

    this.el.setAttribute("cursor", {
       "fuse": "true",
       "fuse-timeout": "500"
    })
...

签出here


正如Nick所指出的,还有两个 utils 可以帮助区分您是使用oculus还是装备vr:

AFRAME.utils.device.isOculusGo ()
AFRAME.utils.device.isGearVr ()

甚至checkHeadsetConnected ()可能都会有帮助