В Unity можно определить направление курсора относительно объекта, используя следующий подход:
1. Получите позицию объекта и позицию курсора в мировых координатах. Для этого можно использовать функции transform.position
, чтобы получить позицию объекта, и Input.mousePosition
, чтобы получить позицию курсора.
2. Вычислите вектор между позицией объекта и позицией курсора. Для этого отнимите позицию объекта от позиции курсора:
Vector3 cursorDirection = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
Здесь Camera.main.WorldToScreenPoint
используется для преобразования позиции объекта из мировых координат в экранные координаты.
3. Нормализуйте вектор направления, чтобы получить единичный вектор:
cursorDirection.Normalize();
4. Теперь у вас есть нормализованный вектор направления курсора относительно объекта. Чтобы определить, в какую сторону он направлен, вы можете использовать следующие проверки:
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.