ThreeJS,向点击方向获取向量

时间:2016-05-25 21:24:55

标签: javascript three.js

我想要实现的目标是让特定的网格向特定的向量移动,直到它最终被玩家停止。

到目前为止,我已设法获取所单击画布的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 个答案:

答案 0 :(得分: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
  }