如何在桌面和VR之间切换? 我想在桌面上使用鼠标光标,当我进入VR时,它应该切换到另一个带有光标融合的相机。
这是我的代码:
<a-entity id="cam-desktop" camera="userHeight: 1.6; zoom:1 " look-controls mouse-cursor>
</a-entity>
<a-entity id="cam-vr" camera="userHeight: 1.6; zoom:1 " look-controls>
<a-animation begin="cursor-fusing" delay=" 3000" attribute="camera.zoom" from="1" to="4" dur="1000"></a-animation>
<a-animation begin="click" delay="500" attribute="camera.zoom" from="4" to="1" dur="1000"></a-animation>
<a-entity cursor="fuse: true; fuseTimeout:4000" geometry="primitive: ring; radiusInner: 0.02; radiusOuter: 0.03; thetaLength: 360; thetaStart: 0" rotation="0 0 90" position="0 0 -1" material="color: black; side: double; shader: flat">
<a-animation begin="cursor-fusing" attribute="geometry.thetaLength" from="360" to="0" easing="linear" dur="3000"></a-animation>
<a-animation begin="mouseleave" attribute="geometry.thetaLength" from="360" to="360" dur="0"></a-animation>
</entity>
</a-entity>
非常感谢你!
答案 0 :(得分:1)
您可以创建一个组件,该组件可以监听“enter-vr”和“exit-vr”事件,并相应地设置活动摄像头:
AFRAME.registerComponent('scenelistener',{
init:function(){
let vrcam = document.querySelector("#cam-vr");
let dcam = document.querySelector("#cam-desktop");
let vrmode = false;
this.el.sceneEl.addEventListener('enter-vr',function(){
if(!vrmode){
dcam.setAttribute('active',false);
vrcam.setAttribute('active',true);
vrmode!=vrmode;
}
}
this.el.sceneEl.addEventListener('exit-vr',function(){
if(vrmode){
dcam.setAttribute('active',true);
vrcam.setAttribute('active',false);
vrmode!=vrmode;
}
}
}
});
实际上,您可以将听众粘贴到任何地方,而且您可以只听取任何事件并根据收到的事件做相应的事情,我只想向您展示这个概念。我不知道如果2会发生什么+相机处于活动状态,因此我在更改时将其设为假
的更新强>
我没有看到摄像机是实体,而不是基元,所以你必须设置这样的属性:setAttribute('camera','active',true)
我对光标有一些问题,所以我根据vr状态使其可见和不可见
工作小提琴(至少是相机开关)here。