Как повернуть 2добъект к цели?

Моя цель - поворачивать 2дgameobject в сторону другого 2dgameobject(target).

я нашел следующий код:

Quaternion rawRoation = Quaternion.Slerp(transform.rotation,
            Quaternion.LookRotation(Player.GetComponent<Transform>().position - transform.position),
            10*Time.deltaTime);
transform.rotation = Quaternion.Euler(0, 0, rawRoation.eulerAngles.z);
Но тут беда, если положение цели по оси x меньше(левее) нашего объекта, то поворот работает неправильно, похоже на инверсию. Как решить эту проблему, переписать код?

Удачный поворот неудачный поворот

p.s. этот метод находится в Update()


Ответы (1 шт):

Автор решения: ted7007

Кинули ответ на основной версии.

// Update is called once per frame
void Update() {
    Vector3 targetDir = target.position - transform.position;
    float angle = Mathf.Atan2(targetDir.y, targetDir.x) * Mathf.Rad2Deg;
    Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);
    transform.rotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * 10);
}

→ Ссылка