Пора значит натаскаться в математике. Нормаль, условно говоря, вектор, перпендикулярный плоскости и направленный от лицевой стороны. В случае 2D это перпендикуляр отрезка, показывающий, где у него верх. (0.0, 1.0) это и есть "вверх" в мире 2D.
В unity для поворота в сторону вектора есть Quaternion.LookRotation или Transform.LookAt, которые не прокатят в 2D, т.к. Z=0.0.
Как-то нарыл такой вот класс, помогающий вертеть 2D объекты:
Код
/** copyright Leroy Ketelaars, 2015.
  * I hereby license the entire human race to use this code as they see fit,
  * provided they maintain this license in their source code as-is.
  * A credit mention in your resulting work would be appreciated. */
using UnityEngine;
using System.Collections;
public static class TransformExtensions
{
    public static void LookAt2D (this Transform t, Vector3 worldPosition)
    {
        t.rotation = Quaternion.identity;
        t.Rotate (Vector3.forward, (Mathf.Atan2 (t.position.y - worldPosition.y, t.position.x - worldPosition.x) * 180f / Mathf.PI) - 180f);
    }
    public static void LookAt2D (this Transform t, Transform target)
    {
        t.rotation = Quaternion.identity;
        t.Rotate (Vector3.forward, (Mathf.Atan2 (t.position.y - target.position.y, t.position.x - target.position.x) * 180f / Mathf.PI) - 180f);
    }
    public static void LookAwayFrom2D (this Transform t, Vector3 worldPosition)
    {
        t.rotation = Quaternion.identity;
        t.Rotate (Vector3.forward, (Mathf.Atan2 (t.position.y - worldPosition.y, t.position.x - worldPosition.x) * 180f / Mathf.PI));
    }
    public static void LookAwayFrom2D (this Transform t, Transform target)
    {
        t.rotation = Quaternion.identity;
        t.Rotate (Vector3.forward, (Mathf.Atan2 (t.position.y - target.position.y, t.position.x - target.position.x) * 180f / Mathf.PI));
    }
}