如何在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}(默认值)。
请多多指教!
- 在控制器本地获取一个点space。
- 将其转换为世界space。
减去点和控制器位置的矢量。
var point = new THREE.Vector3(0, 0, -1);
controllerEl.object3D.localToWorld(point);
var worldDirection = point.sub(controllerEl.object3D.position);
worldDirection
是来自控制器的矢量,在世界 space.
中直接面向控制器
有谁知道如何在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}(默认值)。 请多多指教!
- 在控制器本地获取一个点space。
- 将其转换为世界space。
减去点和控制器位置的矢量。
var point = new THREE.Vector3(0, 0, -1); controllerEl.object3D.localToWorld(point); var worldDirection = point.sub(controllerEl.object3D.position);
worldDirection
是来自控制器的矢量,在世界 space.