1
私はPointerLockControls
をThree.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に近いです。
ご協力いただきありがとうございます。
を
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
カメラの位置を結果の位置に追加する必要があります。 'sphere.position = camera.position.clone()。add(mouse3D) ' –
あなたの返事をありがとうが、上記の問題を解決していないようです。 – binoculars