2016-05-25 29 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和每幀要移動的最大距離.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 
    }