Я пытаюсь повернуть объект по оси z, учитывая точку, которую я вычислил под углом с помощью функции Atan2. Затем я создаю кватернион, чтобы ввести его во вращение объекта. Однако он не вращается в предположительно правильном направлении. Если я рисую углы, заданные функциями Atan2, я визуализирую систему углов по часовой стрелке, но если я рисую углы, которые должны быть так, чтобы мой объект отображался в правильном направлении, я визуализирую систему против часовой стрелки. Решения, создающие словарь со значениями, полученными функцией Atan2 в качестве ключей, и их значения - это углы, на которые объект будет вращаться в правильном направлении. Но я все еще не понимаю, что происходит. Я надеюсь, что кто-то может помочь мне понять это, потому что нет решения хуже, чем то, которое решает, но не знает, что происходит.
public class ArrowMovement : MonoBehaviour
{
public Vector2Variable currentPlayerDirection;
public Vector3Variable currentPlayerPosition;
public InputAxis inputAxis;
private float anglePassed;
private Dictionary<float, float> realAngles = new Dictionary<float, float>();
void Awake()
{
realAngles.Add(-135, -135);
realAngles.Add(-90, 180);
realAngles.Add(-45, 135);
realAngles.Add(0, 90);
realAngles.Add(45, 45);
realAngles.Add(90, 0);
realAngles.Add(135, -45);
realAngles.Add(180, -90);
}
void Update()
{
Vector3 offsetVector = new Vector3(0.2f, 0.05f, 0);
transform.position = currentPlayerPosition.Value;
// Rotation
float angle = Mathf.Atan2(inputAxis.horizontal, inputAxis.verticall) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.Euler(0, 0, realAngles[angle]);
transform.rotation = rotation;
}
}