如何在A框架中获取Oculs Go控制器的方向向量

时间:2019-04-13 08:20:19

标签: aframe

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

我想了解Oculus Go控制器的方向,并在游戏中使用它。我了解激光控制所使用的raycaster组件的“方向”属性具有该值,并尝试了以下代码。

<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 个答案:

答案 0 :(得分:0)

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

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

worldDirection是来自控制器的向量,在世界空间中与控制器直接面对。