Using LookAT causes no rotation at all?

I’m having a problem where I’m using LookAt on a gameObject, to look towards a Vector3 position.

In this case, the world position of the mouse pointer.

I’ve restricted the rotation to the Z axis, however my GameObject doesn’t move at all.

Here’s how I’m doing it currently :


On top of file where I define variables :

[SerializeField]
private Vector2 aimPoint;
[SerializeField]
private Vector3 aimPointInWorld;

In the OnGUI function :

    // Reload the aim-points (in OnGUI since Event is not accessible from update)
    aimPoint = new Vector2(Event.current.mousePosition.x - 8, Event.current.mousePosition.y - 8);
    aimPointInWorld = Camera.main.ScreenToWorldPoint(new Vector2(Event.current.mousePosition.x - 8, Event.current.mousePosition.y - 8));

And this is in the Update function :

    // Player to crosshair rotation
    gameObject.transform.LookAt(new Vector3(0, 0, aimPointInWorld.z));

Why is my 2D sprite not moving at all on any axis?

LookAt() method rotates the transform so the forward vector points at target.

You want to rotate sprite around z. But you are trying to make forward to look in z direction.

Forward is already aligned with z so it is looking already in direction you are referencing.

You can use this in update

 transform.rotation = Quaternion.FromToRotation(transform.up, aimPointInWorld - transform.position);

First argument can be as per you requirement(direction in which 2D sprite is facing)