我的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才能使其正常工作?
答案 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 ()
可能都会有帮助