Если интересует конкретно коллинеарность, то она проверяется следующим образом:
public const float Epsilon = 0.00001f;
public static bool AreCollinear(Vector2 a, Vector2 b)
{
return Mathf.Abs(PerpDot(a, b)) < Epsilon;
}
public static float PerpDot(Vector2 a, Vector2 b)
{
return a.x*b.y - a.y*b.x;
}
Учтите только, что сонаправленность вы так не проверите, для этого лучше использовать
Vector2.Dot. И не забудьте нормализовать вектора, иначе получите не то, что ожидаете.
public const float Epsilon = 0.00001f;
public static bool AreCodirected(Vector2 a, Vector2 b)
{
return Vector2.Dot(a, b) > 1 - Epsilon;
}
Если же говорить про конкретно ваш случай, то лучше использовать
Vector2.Angle или
Quaternion.Angle. Просто считаете угол и стреляете, если он попадает в определённый диапазон.