Math in Unity : LookAt()

Matteo Lo Piccolo
3 min readNov 1, 2021

--

In this article we will briefly talk about the LookAt() method.
It already exists in Unity, and is primarily designed for 3D.

Here’s the reference
https://docs.unity3d.com/ScriptReference/Transform.LookAt.html

Today we will create it from scratch for 2D, the reality is that at the logic level absolutely nothing changes, except the fact that here we will have only two axes to work on.

And it will be very simple, because in practice we will take all the code we have in Start(), and we will translate it into a single method.

For now I simply create LookAt()
and I cut and paste everything inside.

Now, we simply make the method reusable.

First, we need parameters.
As we have seen in these articles, what we need to do the math is:
the Vector that represents our forward,
the Vector representing our position,
and the Vector representing the object position.

We pass these three parameters inside the method

Then we replace the variables with parameters.
We need a variable for direction, and we assign it to
objPos - pos

We calculate the angle,
from our forward and the direction

Then, we calculate the Cross product on Z axis

We create the Vector3 variable of “rotation” and assign it to the Rotate() method

and return it.
So we need to change the method from void to Vector3.

We pass the parameters

Beware of one thing:
since we create a method, we have to initialize DIRECTION in Start() or we get an error.

Another thing is this: I used Normalize (_direction) directly in Update()

But maybe is better use it in Start()

Last change, we have to assigned LooktAt() at our transform.up.

This how works LookAt() method.

--

--

Matteo Lo Piccolo

Always in love with programming, even if late (I'm already 39 years old) I decided to follow my dream! We will see how far my passion will take me!