如何在A-Frame中获取Oculus Go控制器的方向向量

How to get direction vector of Oculs Go controller in A-Frame

有谁知道如何在A-Frame中获取Oculus Go控制器的方向向量?

我想获取 Oculus Go 控制器的方向并在游戏中使用它。我了解到 laser-controls 使用的 raycaster 组件的 "direction" 属性 具有该值,并尝试了以下代码。

<a-scene>
  <!-- laser-controls for Oculus Go controller -->
  <a-entity id="ctl" laser-controls></a-entity>
  <!-- a-text for debug -->
  <a-text id="txt" value="" position="0 2 -2" align="center"></a-text>
</a-scene>

<script>
  const ctl = document.getElementById("ctl");
  const txt = document.getElementById("txt");
  ctl.addEventListener("triggerdown", (evt) => {
    const ray = ctl.getAttribute("raycaster");
    txt.setAttribute("value", JSON.stringify(ray.direction));
  });
</script>

但该值始终为 {"x": 0, "y": 0, "z": -1}(默认值)。 请多多指教!

  1. 在控制器本地获取一个点space。
  2. 将其转换为世界space。
  3. 减去点和控制器位置的矢量。

    var point = new THREE.Vector3(0, 0, -1);
    controllerEl.object3D.localToWorld(point);
    var worldDirection = point.sub(controllerEl.object3D.position);
    

worldDirection 是来自控制器的矢量,在世界 space.

中直接面向控制器