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 );
}
}
私のコードは、ある場所に立っているときは機能しますが、コードを動かし始めると、カメラがまだ元の位置にあるかのように動作します。このコードを変更して、移動するという事実を考慮に入れるにはどうすればよいですか?