Javascript 三个js,得到PointerLockControls面对的向量3

Javascript 三个js,得到PointerLockControls面对的向量3,javascript,math,three.js,Javascript,Math,Three.js,想知道是否有可能获得指针锁定控件中的偏航对象面对的方向,并将其用作光线投射器的方向。我一直在玩弄这些代码,试图添加一些基本的射击技能。我一直在尝试一些我在堆栈溢出上发现的东西,它们是指针控件提供的偏航对象的X&Y值,但是运气不好。以下是我目前掌握的情况: setupTarget: function() { //var vector = new THREE.Vector3(game.mouse.x, game.mouse.y, 0); var yaw = game.controls.get

想知道是否有可能获得指针锁定控件中的偏航对象面对的方向,并将其用作光线投射器的方向。我一直在玩弄这些代码,试图添加一些基本的射击技能。我一直在尝试一些我在堆栈溢出上发现的东西,它们是指针控件提供的偏航对象的X&Y值,但是运气不好。以下是我目前掌握的情况:

setupTarget: function() {
  //var vector = new THREE.Vector3(game.mouse.x, game.mouse.y, 0);
  var yaw = game.controls.getObject();
  var pitch = game.controls.pitchObject;
  var vector = new THREE.Vector3(
    yaw.position.x * Math.cos(pitch.rotation.x),
    yaw.position.y * Math.sin(yaw.rotation.y),
    0
  );
  var dir = vector.sub(yaw.position).normalize();
  this.ray = new THREE.Raycaster(yaw.position.clone(), dir);
}

我知道这是错误的,除了它不起作用。在计算基于旋转的x&y平移时混淆了一些数学,但这显然对目标不起作用。

将以下内容添加到
PointerLockControls的副本中(或等待几天,等待下一版本):


three.js r.59

好吧,新版本不起作用。我必须补充一点

var v = new THREE.Vector3( 0, 0, -1 );
以前

v.copy( direction ).applyEuler( rotation );

因为Firefox不识别v.

我想你可以只做
新的三点Raycaster(this.position,this.rotation)
来获得一条指向对象所望方向的光线。我确实做了一次尝试,但没有成功:(这是你的问题吗“使用
PointerLockControls
时,如何获取相机的方向?”好的。更改您的问题和标题,我会给您答案。:-)非常感谢。我将v设置为:
var v=yawObject.position.clone();
不要使用
clone()
new
在一个紧密的循环中--重用
v
。three.js r.62中实现的功能应该可以在Firefox和任何其他浏览器中正常工作。如果你有问题,你需要发表一篇新文章。我最终做的有点不同(与west的建议相反)。通常,您要做的是将vector对象传递给getDirection函数调用。
v.copy( direction ).applyEuler( rotation );