Hello!

This way I get the direction the camera is looking and move the element in the same vector.

const dir = new THREE.Vector3();

function moveForward() {

camera.getWorldDirection(dir);

cube.position.addScaledVector(dir, speed);

}

The question is how to get a vectors directed at 90 degrees to the left and to the right?

You can compute the intended vectors in two steps. Since you already have the *forward* vector in world space (the look direction), you need the *up* vector in world space. If you don’t change `Object3D.up`

, the value in local space is `(0,1,0)`

. You can transform this vector with the world matrix of the object like so:

```
const up = new Vector3();
up.copy( object.up ).applyMatrix4( object.matrixWorld ).normalize();
```

You can now compute the *right* vector with the cross product:

```
const right = new Vector3();
right.crossVectors( forward, up ).normalize();
```

Negating this vector or changing the order of parameters will output the opposite direction.

2 Likes

Thanks a lot! perfectly working!