4

我正在尝试在 ThreeJS 中创建一个简单的第一人称射击游戏,但在从相机中射出光线时遇到了一些麻烦。我正在使用 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 );
            }
        }

当您站在一个地方时,我的代码可以工作,但是当您开始移动代码时,代码的行为就好像相机仍然在它开始的原点。我如何修改此代码以考虑到我将四处走动的事实?

4

0 回答 0