我愿意制作FPS“飞行模式”三。js应用程序(每当移动鼠标时,都会修改相机的偏航和俯仰角度)。我还想让它有WASD控件,其中A和D分别用于左右扫射。这是我目前的代码:
onkeydown(event) { var distance = 1.1; var v; const vecFront = this.camera.getWorldDirection(); switch (event.key) { case "w": v = vecFront.multiplyScalar(distance); break; case "s": v = vecFront.multiplyScalar(-distance); break; case "a": // don't know break; case "d": // don't know break; } this.camera.position.add(v); }
对于前进和后退,代码工作正常。对于左右向量,我认为是摄影机。up开始起作用,但我不知道怎么做。如果您提供代码,请详细解释一切(几何)。提前感谢您的帮助。
附笔。: 我知道已经有三个了。js文件可以做到这一点,但关键是我要学习一些基本的几何图形。
右向量 R 由 向量叉积 世界的方向( W )和上方向向量( U ):
R
W
U
R = (W.y * U.z - W.z * U.y, W.z * U.x - W.x * U.z, W.x * U.y - W.y * U.x)
请记住在使用此向量之前对其进行规格化。
但是,有一种更有效的方法,使用 查看矩阵 摄像头的 matrixWorldInverse 字段)。The( 也已经正常化了! )右向量由 第一 矩阵的行。
matrixWorldInverse