Повернуть 2D объект
Всем привет. Возникла проблема, а именно. есть поинты, в которых лежат стрелки(пока что), как показано на рисунке.
Написал такой метод, который должен поворачивать свою стрелку на минимальный по значению поинт.
private void LightningDirection(int id, GameObject searchedItem)
{
Debug.Log("Откуда: " + PointsGO[id].name + "\nКуда: " + searchedItem.name);
float angle = Vector3.SignedAngle(PointsGO[id].transform.position, searchedItem.transform.position, Vector2.right);
Points[id].Lightning.transform.eulerAngles = new Vector3(0f, 0f, angle);
}
После запуска, как уже можно было догадаться, стрелки повернуты неправильно.

Перепробовал много способов, но некоторые были еще хуже, а некоторые также работали неправильно. Вроде не сложная задача, но что-то остановила она меня.
Ответы (1 шт):
Второй раз нахожу ответ на свой вопрос...
В общем нашел способ один, оставлю снизу, если кому нужен:
Vector3 difference = to.transform.position - from.transform.position;
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.AngleAxis(rotZ - 90, Vector3.forward);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1);
to - это объект на который вам надо смотреть.
Примечание! Если у вас не ровно поворачивает объект(ы), то уберите из
rotZ - 90вычитание 90 (просто чтобы rotZ был).