Aframe A帧调整移动设备上的相机旋转
使用帧如何手动更改相机旋转,使其在移动设备上工作,并且仍然使用外观控件 我已经尝试通过html属性进行如下操作:Aframe A帧调整移动设备上的相机旋转,aframe,Aframe,使用帧如何手动更改相机旋转,使其在移动设备上工作,并且仍然使用外观控件 我已经尝试通过html属性进行如下操作: document .querySelector('[camera]') .setAttribute('rotation', { x: 0, y: deg, z: 0 }) 这在桌面上运行良好,但在移动设备上,“外观控制”组件似乎将相机旋转重置为以前的值 我已经在这里为这个问题设置了一个演示,它改变了旋转并禁用了外观控件。然后我设置了一个超时,在1秒后重新启用look控件 按
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。在某些情况下,它可能会解决问题(可能是固定摄像头),但一般来说,我认为它不会像大多数交互式应用程序需要解决的那样解决问题。