Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 3.js 90和xB0;矢量旋转_Three.js - Fatal编程技术网

Three.js 3.js 90和xB0;矢量旋转

Three.js 3.js 90和xB0;矢量旋转,three.js,Three.js,我有一个问题:我有一个立方体,我想让它去我想去的地方(向前、向后、向左或向右)。问题是当我旋转相机时,“前进”方向每次都必须在它前面,其他方向也是如此 事实上,通过这样做,我已经让它向前和向后工作: // For forward camera.getWorldDirection( direction ) cube.position.add(direction) // For backward camera.getWorldDirection( direction ) cube.position.

我有一个问题:我有一个立方体,我想让它去我想去的地方(向前、向后、向左或向右)。问题是当我旋转相机时,“前进”方向每次都必须在它前面,其他方向也是如此

事实上,通过这样做,我已经让它向前和向后工作:

// For forward
camera.getWorldDirection( direction )
cube.position.add(direction)
// For backward
camera.getWorldDirection( direction )
cube.position.sub(direction)

我真正的问题是如何将矢量方向“旋转”到90°,这样我只需添加和细分到立方体位置即可向左和向右移动?

您想在摄影机空间中指定一个方向,并将该方向转换为世界空间。您可以按照如下模式进行操作:

// create once and reuse
var RightDir = new THREE.Vector3( 1, 0, 0 );
var UpDir = new THREE.Vector3( 0, 1, 0 );
var ForwardDir = new THREE.Vector3( 0, 0, - 1 ); // the camera looks down its negative-z axis
var dir = new THREE.Vector3();
var distance = 10;
然后,将立方体向右移动,例如:

dir.copy( RightDir ).transformDirection( camera.matrixWorld ).multiplyScalar( distance );

cube.position.add( dir );
要向左移动,请使用负距离

注意:
camera.matrixWorld
通常由渲染器为您更新。如果你的应用程序中没有,那么在访问它之前,你需要调用
camera.updateMatrix()


3.js。r、 85

您希望在摄影机空间中指定一个方向,并将该方向转换为世界空间。您可以按照如下模式进行操作:

// create once and reuse
var RightDir = new THREE.Vector3( 1, 0, 0 );
var UpDir = new THREE.Vector3( 0, 1, 0 );
var ForwardDir = new THREE.Vector3( 0, 0, - 1 ); // the camera looks down its negative-z axis
var dir = new THREE.Vector3();
var distance = 10;
然后,将立方体向右移动,例如:

dir.copy( RightDir ).transformDirection( camera.matrixWorld ).multiplyScalar( distance );

cube.position.add( dir );
要向左移动,请使用负距离

注意:
camera.matrixWorld
通常由渲染器为您更新。如果你的应用程序中没有,那么在访问它之前,你需要调用
camera.updateMatrix()


3.js。r、 85

当用户帮助您时,请记住接受答案。当用户帮助您时,请记住接受答案。