如何在Three.js中使用PointerLockControls正确使用getDirection()

时间:2016-07-08 11:30:14

标签: three.js pointerlock

我在PointerLockControls中使用Three.js

在鼠标单击时,我想将球体位置更新到相机所面对的位置,与某个对象的z-position相同。我读过getDirection(),但似乎无法以正确的方式实现它。这是我试过的:

var mouse3D = new THREE.Vector3();
mouse3D.normalize();
controls.getDirection( mouse3D );
sphere.position.x = mouse3D.x;
sphere.position.y = mouse3D.y;
sphere.position.z = object.position.z;

z-position没问题,但是x和y非常接近0,球体“保持在地面上”并且不会“向左或向右”。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

方向是归一化向量(长度为1)

您必须找到因素,以便camera.position + direction * factorz = object.position.z

提供向量

factor = (object.position.z - camera.position.z)/direction.z

只需将您的mouse3D矢量mouse3D.multiplyScalar(factor)

相乘