如何检查用户是否使用耳机而不是鼠标?

How do I check if user is using a headset instead of mouse?

因此,我将确定是否仅当用户使用耳机时我的光标保险丝才会被激活。我想提供两种不同的行为,具体取决于他是使用鼠标还是使用 HMD 进行导航。我该如何检查?

您可以使用 AFRAME.utils.device.checkHeadsetConnected() (docs) 查询是否存在耳机,但这并不能告诉您他们是否真的在使用连接的耳机。

当用户进入 fullscreen/VR 模式 (docs) 时,您的 a-scene 实体将发出 'enter-vr' 事件,因此您可以在那时检查他们是否有已连接耳机并知道它们是否处于耳机 VR 模式:

window.addEventListener('enter-vr', e => {
  if (AFRAME.utils.device.checkHeadsetConnected()) { /* modify cursor */ }
});

但是,这不包括带有简单查看器的移动用例(不会触发 checkHeadsetConnected),因此您还需要检查 ARAME.utils.device.isMobile()docs)

window.addEventListener('enter-vr', e => {
  if (AFRAME.utils.device.checkHeadsetConnected() ||
      ARAME.utils.device.isMobile()) { /* modify cursor */ }
});

您可能还想在非移动设备上为 exit-vr 添加另一个侦听器,并将光标恢复为点击模式。