Привет, я работал над методом поворота камеры.
Я пытаюсь повернуть камеру с помощью мыши. Мне нужно, чтобы горизонтальное вращение было параллельно плоскости x, y (моя доска), а вертикальное вращение было ограничено определенным углом (что-то вроде 40 градусов до -40).
Я использую кватернионы для поворота камеры.
Вот мой код пока
float angle = (mouseX_Current - mouseX_ActionStart) * 0.25f;
Quaternion horizontalRotationQuat = Quaternion.AngleAxis(angle, Vector3.up);
angle = (mouseY_Current - mouseY_ActionStart) * 0.25f;
Quaternion verticalRotationQuat = Quaternion.AngleAxis(angle, Vector3.right);
Camera.main.transform.rotation *= (horizontalRotationQuat * verticalRotationQuat);
Моя проблема в том, что, добавив эти вращения, связанные с мышью, к моему текущему кватерниону ориентации камеры, камера больше не будет параллельна плоскости (x, y), на которую она смотрит.
Я пытался создать кватернион коррекции для добавления к кватерниону камеры после добавления этих вращений, связанных с мышью, но я не могу найти правильный.
Quaternion currentOrientationQuat = Camera.main.transform.rotation;
Quaternion corretionQuat = new Quaternion(0.0f, 0.0f, - currentOrientationQuat.z, currentOrientationQuat.w);
Camera.main.transform.rotation *= corretionQuat;
Если бы кто-то мог мне помочь в этом, я был бы очень благодарен. Спасибо.
Извините за английский, а не за мой основной язык.