如果触摸物体移动到框架位置
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>
我想知道如果相机到达距离 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>