2016-05-25 18 views
0

私が達成しようとしているのは、最終的にプレイヤーによって停止されるまで、特定のメッシュを特定のベクトルに移動させることです。ThreeJS、クリックされた方向に向かってベクトルを得る

これまで私は、クリックされたキャンバスのXY座標を取得して、次のコードを使用して3Dで投影しました。残念ながら、私はクリックされた位置に向かう方向を得るためにどのようなアプローチをとるべきかはわかりません。

var vector = new THREE.Vector3(); 

vector.set(
    (event.clientX/window.innerWidth) * 2 - 1, 
    + (event.clientY/window.innerHeight) * 2 + 1, 
    0.5); 

vector.unproject(camera); 

var dir = vector.sub(camera.position).normalize(); 

var distance = + camera.position.z/dir.z; 

var pos = camera.position.clone().add(dir.multiplyScalar(distance)); 

答えて

1

これは、ターゲットVector3と1フレームあたりの最大移動距離が.01であることを前提としています。

var vec1 = target.clone(); // target 
    vec1.sub(mesh.position); // target - position 
    var dist = Math.min(vec1.length(), .01); // assume .01 is maximum movement 
    if (dist > 0) { 
    vec1.setLength(dist); // this will be the movement 
    mesh.position.add(vec1); // this moves the messh 
    } 
関連する問題