Three.js, PointerLock и обнаружение столкновений

Я работаю над проектом 3D виртуального дома. все работает нормально, кроме обнаружения столкновений. Я использую PointerLockControls для своей камеры и движения. но я не уверен, как обнаружить столкновение во всех возможных направлениях. Для простоты я начал с простого прямого и обратного столкновения с простым кубом по (0,0,0):

rays = [
    new THREE.Vector3(0, 0, 1),
    new THREE.Vector3(0, 0, -1)
];

Затем:

function detectCollision() {
var vector;
var projector = new THREE.Projector();

for (var i = 0; i < rays.length; i++) {
    var vector = rays[i].clone();
    projector.unprojectVector(vector, camera);

    var rayCaster = new THREE.Raycaster(controls.getObject().position, vector.sub(controls.getObject().position).normalize());
    var intersects = rayCaster.intersectObject(cube, true);

    if (intersects.length > 0 && intersects[0].distance < 50) {
        console.log(vector);
        console.log(i, intersects);
        $("#status").text("Collision detected @ " + rays[i].x + "," + rays[i].z +
            "<br \>" + intersects[0].distance);
    }
}

Но когда я подхожу достаточно близко к своему кубу, консоль показывает, что оба луча попали в куб! так почему? Есть ли проблемы с моими лучами? вектор (0,0,1) должен быть обратным, а (0,0, -1) должен быть вперед, верно? Пожалуйста, помогите мне, прежде чем я потеряюсь в 3D! Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос