Мне необходимо камерой следить за объектом, который вращается вокруг сферы. Центр сферы это начало глобальных координат.
Позицию камеры я по Update выставляю так, что камера располагается в том же направление, что и объект относительно начала координат, но дальше от центра сферы.
Далее мне каждый кадр необходимо выставлять угол поворота камеры, чтобы она смотрела на объект.
Сначала я использовал для этого функцию LookAt(), но возникла проблема с установкой угла поворота камеры вокруг оси камеры z.
Я решил разобраться в использовании кватернионов, для более гибкого управления камерой.
В конструкторе Quaternion необходимо указать 4 параметра. Я решил, что первые 3 параметра задают трехмерный вектор, 4 параметр задает угол поворота вокруг оси этого вектора. Таким образом, чтобы камера смотрела в центр глобальный координат задаю следующее значение:
Синтаксис:
Используется csharp
Camera.main.transform.rotation = new Quaternion(Camera.main.transform.position.x, -Camera.main.transform.position.y, -Camera.main.transform.position.z, 0);
Не получаю ожидаемого результата. Сразу возник вопрос, совпадает ли ось куда смотрит камера с вектором который я задаю в конструкторе кватерниона? Если нет, как вести необходимую поправку?
Никогда раньше не работал с 3d, поэтому если где-то жестоко ошибаюсь, прошу проявить терпение и поправить.