2016-07-08 19 views
1

私はPointerLockControlsThree.jsに使用しています。Three.jsのPointerLockControlsでgetDirection()を正しく使用する方法

マウスをクリックすると、特定のオブジェクトの同じz-positionに、球面位置をカメラが向いている位置に更新したいと思います。私はgetDirection()について読んだことがありますが、正しい方法で実装することはできません。ここに私が試したものです:

var mouse3D = new THREE.Vector3(); 
mouse3D.normalize(); 
controls.getDirection(mouse3D); 
sphere.position.x = mouse3D.x; 
sphere.position.y = mouse3D.y; 
sphere.position.z = object.position.z; 

z-positionは大丈夫ですが、xとyは球が「地面に」とどまり、「左または右に」行かないことを0に近いです。

ご協力いただきありがとうございます。

答えて

0

方向は、正規化されたベクトルである

(長さが1である)あなたはcamera.position + direction * factorは私がmouse3D.multiplyScalar(factor)

+0

z = object.position.z

factor = (object.position.z - camera.position.z)/direction.z

とベクトルを与え、ちょうどあなたのmouse3Dベクトルを掛けるように係数を見つけなければなりません'var factor =(object.position.z - camera.position.z)/mouse3D.z;を試しました。 mouse3D.multiplyScalar(factor); '。これは、球を右のx位置に置くように見えますが、y位置はまだオフです。球はいつも私がクリックしたところの下に現れます...どんな考えですか?また、キャラクターを動かす瞬間(一人称シューティングゲームのように)、xの位置も正しくありません。 – binoculars

+0

カメラの位置を結果の位置に追加する必要があります。 'sphere.position = camera.position.clone()。add(mouse3D) ' –

+0

あなたの返事をありがとうが、上記の問題を解決していないようです。 – binoculars

関連する問題