我正在尝试在 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 );
}
}
当您站在一个地方时,我的代码可以工作,但是当您开始移动代码时,代码的行为就好像相机仍然在它开始的原点。我如何修改此代码以考虑到我将四处走动的事实?