Given two Vector2s in WORLD SPACE how would i find the rotation to make the first point lookat the second one? (Basically unity transform.lookat function)

Hello Potato,

I think you “mathematically” mix up Points and Vectors.

I suggest you try to build a class with Point2 as Position and Vector2 as LookAtDirection.

Then you set the LookAtDirection of Object A to (B.X - A.X | B.Y - A.Y).

You can also normalize that LookAtDirection-Vector with a Methodcall on Vector.Normalize().

Edit:

Sorry i forgot to mention the rotation.

Therefore i would add Vector2 OldLookAtDirection,

And then you can calculate it with this simple formula:

Angle = cos^-1 (scalarproduct of Old and New / Length of New times Length of Old).

Then you know how much the Object “misslooks” the other Object

Edit: Typo

To get a lookat matrix from pointA to pointB you can use Matrix.CreateWorld. This is for 3D though, but you can just set the z-components of the vectors to 0, in which case the upVector needs to be (0,0,1):

```
Matrix lookat = Matrix.CreateWorld(pointA, pointB - pointA, upVector);
```

Subtract the difference between the 2 vector2’s into a new vector2

Normalize the new vector2

Then convert the normalised vector into radians

angleFromVector =

(float)Math.Atan2(newvector.X, -newvector.Y)

If I recall correctly you need to use negative for the y