Как правильно использовать 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)

Другие вопросы по тегам