Aframe A帧调整移动设备上的相机旋转

Aframe A帧调整移动设备上的相机旋转,aframe,Aframe,使用帧如何手动更改相机旋转,使其在移动设备上工作,并且仍然使用外观控件 我已经尝试通过html属性进行如下操作: document .querySelector('[camera]') .setAttribute('rotation', { x: 0, y: deg, z: 0 }) 这在桌面上运行良好,但在移动设备上,“外观控制”组件似乎将相机旋转重置为以前的值 我已经在这里为这个问题设置了一个演示,它改变了旋转并禁用了外观控件。然后我设置了一个超时,在1秒后重新启用look控件 按

使用帧如何手动更改相机旋转,使其在移动设备上工作,并且仍然使用外观控件

我已经尝试通过html属性进行如下操作:

document
  .querySelector('[camera]')
  .setAttribute('rotation', { x: 0, y: deg, z: 0 })
这在桌面上运行良好,但在移动设备上,“外观控制”组件似乎将相机旋转重置为以前的值

我已经在这里为这个问题设置了一个演示,它改变了旋转并禁用了外观控件。然后我设置了一个超时,在1秒后重新启用look控件

按任意html按钮可旋转到对象并禁用“外观”控件。1秒后,控件重新启用。如果您在移动设备上尝试此操作,您会注意到相机会旋转,然后在启用“外观”控件时,它会在1秒后恢复


在移动设备上是否也需要重置某些偏移量,可能是lookcontrols.yawObject?

将相机放在实体内:

<a-entity rotation="0 0 0">
    <a-camera></a-camera>
</a-entity>


然后旋转实体而不是相机。

您需要稍微更改look-controls.js以使其工作,因为在移动设备上,它不会从相机实体获取旋转属性

look-controls.js中的函数
updateOrientation

if (sceneEl.isMobile) {
   // On mobile, do camera rotation with touch events and sensors.
   rotation.x = radToDeg(hmdEuler.x) + radToDeg(pitchObject.rotation.x);
   rotation.y = radToDeg(hmdEuler.y) + radToDeg(yawObject.rotation.y);
   rotation.z = radToDeg(hmdEuler.z);
}

只是一个警告-这对我来说并没有真正起作用,因为它弄乱了外观控件的旋转轴,例如,水平旋转不再与“地面”平面平行,而是偏离了一个角度,这导致了奇怪的UX。在某些情况下,它可能会解决问题(可能是固定摄像头),但一般来说,我认为它不会像大多数交互式应用程序需要解决的那样解决问题。