Aframe 相机旋转后定位激光控制实体

Aframe 相机旋转后定位激光控制实体,aframe,webvr,Aframe,Webvr,我有以下激光控制的代码,当相机进入VR模式后直视前方时,激光控制处于完美位置 <a-entity position="0.25 1.25 -0.2" class="laser-controls"> <a-entity laser-controls="hand: right" line="color: red"></a-entity></a-entity> 问题是:当我旋转我的头部(相机)时,我想让控制装置平稳地跟随我的头部旋转(我有一些代

我有以下激光控制的代码,当相机进入VR模式后直视前方时,激光控制处于完美位置

<a-entity position="0.25 1.25 -0.2" class="laser-controls">
  <a-entity laser-controls="hand: right" line="color: red"></a-entity></a-entity>

问题是:当我旋转我的头部(相机)时,我想让控制装置平稳地跟随我的头部旋转(我有一些代码,看起来旋转是否大于110度)。我不希望控制器成为相机的一部分,因为它们应该保持自己的独立旋转。我喜欢的是Oculus Home(Gear VR)中控制器模型的行为

如何实现这一点是我的自定义组件,比方说在我的tick函数中,它每两秒钟调用一次(代码已经运行)


谢谢

使用
getAttribute()
检查相机组件和激光控制器实体的旋转如何?然后,您可以检查差值是否超过110度:

let angle = laser.getAttribute('rotation');
if (camera.getAttribute('rotation').y - laser.getAttribute('rotation').y>110){
   angle.y++;
   laser.setAttribute('rotation',angle);
} else if(camera.getAttribute('rotation').y - laser.getAttribute('rotation').y<-110){
   angle.y--;
   laser.setAttribute('rotation',angle);
}

使用
getAttribute()
检查相机组件和激光控制器实体的旋转如何?然后,您可以检查差值是否超过110度:

let angle = laser.getAttribute('rotation');
if (camera.getAttribute('rotation').y - laser.getAttribute('rotation').y>110){
   angle.y++;
   laser.setAttribute('rotation',angle);
} else if(camera.getAttribute('rotation').y - laser.getAttribute('rotation').y<-110){
   angle.y--;
   laser.setAttribute('rotation',angle);
}

谢谢但是这个代码只改变了控制器的旋转。如果控制器在初始旋转时位于相机正下方的右侧,并且如果我将头部旋转>110度,则它只会旋转控制器模型,但不会移动到新头部旋转的旁边(它在初始姿势时所处的位置)。如果我转头,那么控制器就在相机的左侧,因为它只是停留在原来的位置。我添加了一个代码笔,控制器不会停留在相机旁边,使用控制器在Gear VR中进行测试。我认为这种控制器行为可以成为一个组件,因为许多人都需要这种功能。谢谢。但是这个代码只改变了控制器的旋转。如果控制器在初始旋转时位于相机正下方的右侧,并且如果我将头部旋转>110度,则它只会旋转控制器模型,但不会移动到新头部旋转的旁边(它在初始姿势时所处的位置)。如果我转头,那么控制器就在相机的左侧,因为它只是停留在原来的位置。我添加了一个代码笔,控制器不会停留在相机旁边,使用控制器在Gear VR中进行测试。我认为这种控制器行为可以成为一个组件,因为许多人都需要这种功能。