Поворот объекта с помощью корутины
У меня есть gameObject bg, вращением которого по оси Z можно управлять с помощью клавиш в Update. Я рассчитываю положение другого объекта на основе угла поворота таким образом:
private Vector3 _currentTargetPos;
_currentTargetPos = _target.localPosition;
float currentRotation = bg.transform.rotation.eulerAngles.z;
Quaternion rotation = Quaternion.AngleAxis(currentRotation, new Vector3(0f, 0f, 1f));
Vector3 rotatedVector = rotation * (_currentTargetPos - bg.transform.position);
Vector3 rotatedPoint = rotatedVector + bg.transform.position;
_target.localPosition = rotatedPoint;
if (Input.GetKey(KeyCode.D))
bg.transform.rotation = Quaternion.Euler(0f, 0f, currentRotation - 60f * Time.deltaTime);
else if (Input.GetKey(KeyCode.A))
bg.transform.rotation = Quaternion.Euler(0f, 0f, currentRotation + 60f * Time.deltaTime);
Я хочу сделать так, чтобы в другом методе можно было указать угол поворота объекта bg на определенное количество градусов, и чтобы этот поворот учитывался при изменении положения bg в Update. Если совсем просто, я хочу добиться независимого вращения объекта bg с помощью клавиш и с помощью вызова другого метода одновременно.
Я пытаюсь создать корутину, в которой меняю угол. Изменить угол получается, но при этом поворот bg с помощью стрелок работает некорректно.
Я пробовал хранить угол поворота в отдельной переменной и прибавлять к bg.transform.rotation.eulerAngles.z, менять в корутине _currentTargetPos, но корректно повернуть bg всё равно не получается.
Вроде бы разгадка где-то рядом, но уже пару дней не могу понять где.
Как изменить угол поворота в другом методе с этой реализацией поворота и изменения положения в Update?