如果触摸物体移动到框架位置

if touching object move to location aframe

我想知道如果相机到达距离 0 0 0 点 20 个空间的帧中,如何将它们传送回该点。这样的事情是容易实现还是困难?我怎样才能做到这一点。

您可以使用 el.object3D.position 获取对象的位置 - 即 return x,y,z 向量,或者您可以使用 el.object3D.position.x(或 .y / .z只有一个轴)。

您也可以使用相同的函数设置位置el.object3D.position.x = 23.12

正如@Piotr Adam Milewski 所说,您需要计算距离 - 您可以使用以下表达式 distance = sqrt(x^2 + y^2 + z^2) 或使用 THREE.Vector3.distanceTo() 然后将其与某个值进行比较并相应地设置位置(相机默认位置是 0, 1.6, 0 而不是 0, 0, 0)。

一个非常简单的例子:

<!DOCTYPE html>
<html lang="en">

<head>
  <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
  <meta charset="UTF-8" />
</head>

<body>
  <script>
    AFRAME.registerComponent('limit-my-distance', {
      init: function() {
        this.zero = new THREE.Vector3(0, 0, 0);
      },
      tick: function() {
        if (this.el.object3D.position.distanceTo(this.zero) > 10) {
          this.el.object3D.position.set(0, 1.6, 0);
        }
        //this.el.object3D.position.x += 0.1;
      }
    });
  </script>
  <a-scene>
    <a-sphere position="0 2 -10"color="red"></a-sphere>
    <a-plane color="green" position="0 0 -5" rotation="-90 0 0" width="20" height="20"></a-plane>
    <a-camera limit-my-distance></a-camera>
    <a-sky color="#fff"></a-sky>
  </a-scene>
</body>

</html>