Javascript 三人一组从摄像机中射出一道光线

Javascript 三人一组从摄像机中射出一道光线,javascript,3d,three.js,Javascript,3d,Three.js,我正在尝试用3J制作一个简单的第一人称射击游戏,但在从相机中拍摄光线时遇到了一些问题。我正在使用Doob先生的github上的PointerLock示例代码,当我看一个框并单击鼠标时,我只是试图更改框的颜色,但我的代码似乎只是随机更改框的颜色 以下是查找碰撞的代码: function onDocumentMouseDown( event ) { event.preventDefault(); var vector = new THREE.Vec

我正在尝试用3J制作一个简单的第一人称射击游戏,但在从相机中拍摄光线时遇到了一些问题。我正在使用Doob先生的github上的PointerLock示例代码,当我看一个框并单击鼠标时,我只是试图更改框的颜色,但我的代码似乎只是随机更改框的颜色

以下是查找碰撞的代码:

function onDocumentMouseDown( event ) {

            event.preventDefault();

            var vector = new THREE.Vector3(0,0,1);

            projector.unprojectVector(vector, camera);
            var rayCam = new THREE.Ray(camera.position, vector.sub(camera.position).normalize() );

            var rayCaster = new THREE.Raycaster(rayCam.origin, rayCam.direction);
            //rayCaster.ray = rayCam;

            var intersects = rayCaster.intersectObjects(scene.children);

            if (intersects.length) {
                intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );
            }
        }

当你站在一个地方时,我的代码就起作用了,但是当你开始移动代码时,代码的作用就好像相机仍然在原点,它是从哪里开始的。如何修改此代码以考虑到我将四处走动的事实?

请参见此处接受的答案:谢谢!实际上我抓错了位置。事实证明,PointerLock控件实际上不会更改它们从中抓取的摄影机的位置。