2

我正在使用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,以至于球体保持“在地面上”并且不会“向左或向右”移动。

任何帮助深表感谢!

4

1 回答 1

0

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

你必须找到因子,以便camera.position + direction * factor给出向量z = object.position.z

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

并乘以你的 mouse3D 向量mouse3D.multiplyScalar(factor)

于 2016-07-08T12:38:02.120 回答