Solved.

I have a turret that slowly rotates towards a target. The game is 2.5D and is oriented along XY axis with Z as “up”.

This was the original code which worked great, but was for XZ axis with Y up.

I’ve changed the *up* vector in the *CreateWorld* to every Vector3 direction and it still doesn’t orient correctly. The turret lays in random directions. The model *is* oriented correctly as it looks great before applying the new Slerp rotation. The closest I can get it to work in a desired direction is changing the ‘up’ argument to my *targetRotation* and my ‘forward’ argument to *Vector3.Forward*.

```
Vector3 targetRotation = Vector3.Normalize(target.position - myPosition);
myRotation = Quaternion.Slerp(myRotation, Quaternion.CreateFromRotationMatrix(Matrix.CreateWorld(myPosition, targetRotation, Vector3.Up)), delta * 3f);
```

Unfortunately I currently don’t have a fantastic understanding of matrices and quaternion. Thanks