无法与raycaster保持距离

时间:2015-03-11 22:30:47

标签: javascript three.js

我正在研究一些允许我移动对象的代码,该对象包含相机,这样就像你可以在场景中驱动对象一样。

我正在尝试使用raycaster来测量从可移动物体到可移动物体下的其他物体的距离。

希望能够使用距离来添加到当前可移动物体高度。

这是我提出的代码示例。

var origin = new THREE.Vector3(object.position.x,object.position.y,object.position.z);
//origin.normalize();
var direc = new THREE.Vector3(object.position.x,0,object.position.z);
direc.normalize();
alert('oX ' + origin.x + ', oY ' + origin.y + ', oZ ' + origin.z + ', dX ' + direc.x + ', dY ' + direc.y + ', dZ ' + direc.z);
var raycaster = new THREE.Raycaster();
raycaster.set(origin,direc);
var intersected = raycaster.intersectObjects(self.scene.children);
for ( var intersect in intersected ) {
    alert(intersect.distance);
}

使用提醒问题似乎是我direc.normalize()时的问题。 这会改变x,y,z与它们应该是什么。 如果我不使用normalize(),似乎不会给出任何结果。

可移动物体设置为matrixAutoUpdate = true;

1 个答案:

答案 0 :(得分:0)

Vector类有一个distanceTo函数,可能对你有些影响。它计算向量与另一个向量的距离。

var distance = mesh.position.distanceTo(intersected.object.position)