在 Aframe 中跟踪传送位置的最佳方法是什么?

What is the best way to track teleport position in Aframe?

我正在使用 aframe-teleport-controls,我想知道跟踪用户位置的最佳方式是什么。

我一直在寻找,找到了两种方法。

1 - 我使用的是传送控制器的位置,几乎就是用户的位置。

var teleportControls = el.closest('a-scene').querySelector('[teleport-controls]');
var worldPos = new THREE.Vector3();
worldPos.setFromMatrixPosition(teleportControls.object3D.matrixWorld);
console.log(worldPos);

2 - 我在场景中定义了一个相机元素并使用了他的位置。

var teleportControls = el.closest('a-scene').querySelector('a-camera');
var worldPos = new THREE.Vector3();
worldPos.setFromMatrixPosition(teleportControls.object3D.matrixWorld);
console.log(worldPos);

我不确定这是好的做法,我怎么能听到用户改变了他的立场?

感谢阅读本文。

控制器元素(不是相机)将在用户传送时发出 teleport 事件(在 source here 中找到)。检测这些事件的最简单方法是在事件冒泡时监听场景元素。

sceneEl.addEventListener('teleport', function (e) {
  console.log(e.detail.oldPosition, e.detail.newPosition);
});