You can find the angle between your mouse position and character: Code (csharp): public static float SignedAngle(Vector2 a, Vector2 b) { Vector3 a3 = (Vector3)a; Vector3 b3 = (Vector3)b; var angle = Vector3.Angle(a3, b3); return angle * Mathf.Sign(Vector3.Cross(a3, b3).z); } and then rotate your GO around the Z axis like so: Code (csharp): float angle = SignedAngle(dir, new Vector3(0,1)); Quaternion lookDir = Quaternion.AngleAxis(angle, new Vector3(0,0,-1)); transform.localRotation = lookDir;