如何检测或 select A 帧中的活动相机?

How do I detect or select the active camera in A-Frame?

我有一个 a-image 实体。

当我设置look-at="[camera]"时,它没有指向活动相机。

当我设置 look-at="#camera"(即活动相机的 ID)时,它工作正常。

有谁知道为什么它可能不适用于 [camera]?我有多个摄像头,但一次只有一个处于活动状态。

[camera] 是一个 querySelector 所以当你做 [camera] (这意味着任何具有 camera 属性的元素,每个相机都有),你无法控制哪个将选择相机。

如果您在相机之间切换并想要抓取活动相机,则需要在活动相机上设置 class 或属性。

您可以收听 camera-set-active 事件:

document.querySelector('a-scene').addEventListener('camera-set-active', function (evt) {
  // 1. Remove active class from all cameras.
  // ...

  // 2. Add active class to camera.
  evt.detail.cameraEl.classList.add('active-camera');
});

对于look-at,你可以做到look-at=".active-camera"。不幸的是,由于该组件目前不会检测到 class 的更改,您需要刷新它。最快的方法是分离 (removeAttribute) 并重新附加组件 (setAttribute)。