MoveTowardsAngle специально меняет отрицательные углы на положительные, если не хотите такое поведение, то используйте обычный MoveTowards.
public static float MoveTowardsAngle(float current, float target, float maxDelta)
{
float num = Mathf.DeltaAngle(current, target);
if (-(double) maxDelta < (double) num && (double) num < (double) maxDelta)
return target;
target = current + num;
return Mathf.MoveTowards(current, target, maxDelta);
}
public static float DeltaAngle(float current, float target)
{
float num = Mathf.Repeat(target - current, 360f);
if ((double) num > 180.0)
num -= 360f;
return num;
}