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