Как правильно использовать getDirection() с PointerLockControls в Three.js
Я использую 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 ответ
Направление - нормализованный вектор (длина 1)
Вы должны найти фактор, чтобы camera.position + direction * factor
дает вектор с z = object.position.z
factor = (object.position.z - camera.position.z)/direction.z
и просто умножьте свой вектор mouse3D mouse3D.multiplyScalar(factor)