Как понять в какую сторону направлен курсор относительно объекта?

В Unity можно определить направление курсора относительно объекта, используя следующий подход:

  1. Получите позицию объекта и позицию курсора в мировых координатах. Для этого можно использовать функции transform.position, чтобы получить позицию объекта, и Input.mousePosition, чтобы получить позицию курсора.
  1. Вычислите вектор между позицией объекта и позицией курсора. Для этого отнимите позицию объекта от позиции курсора:
Vector3 cursorDirection = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);

Здесь Camera.main.WorldToScreenPoint используется для преобразования позиции объекта из мировых координат в экранные координаты.

  1. Нормализуйте вектор направления, чтобы получить единичный вектор:
cursorDirection.Normalize();
  1. Теперь у вас есть нормализованный вектор направления курсора относительно объекта. Чтобы определить, в какую сторону он направлен, вы можете использовать следующие проверки:
float dotUp = Vector3.Dot(cursorDirection, transform.up);
float dotRight = Vector3.Dot(cursorDirection, transform.right);

if (Mathf.Abs(dotUp) > Mathf.Abs(dotRight))
{
    if (dotUp > 0)
    {
        // Курсор направлен вверх
    }
    else
    {
        // Курсор направлен вниз
    }
}
else
{
    if (dotRight > 0)
    {
        // Курсор направлен вправо
    }
    else
    {
        // Курсор направлен влево
    }
}

Здесь мы используем скалярное произведение (dot product) вектора направления и векторов "вверх" и "вправо" объекта, чтобы определить, в какую сторону направлен курсор.

Таким образом, вы можете определить, в какую сторону направлен курсор относительно объекта в Unity.