Я сделал нечто похожее на это (это была камера от третьего лица). Если я помню, что я сделал правильно, я взял изменение положения мыши и использовал это для вычисления двух углов (я сделал это с некоторым триггером, я полагаю). Один угол дал мне горизонтальное вращение, другой дал мне вертикальное вращение. В частности, Pitch, Yaw and Roll, хотя я не могу вспомнить, в каком направлении это происходит. Есть еще один, который вы должны сделать, прежде чем другой, иначе все будет смешно. Я почти уверен, что сначала это был шаг, затем рыскание или крен.
Надеюсь, должно быть очевидно, что изменило положение мыши. Это позволило чувствительность мыши. Если бы я быстро двигал мышь, у меня было бы большее изменение, и поэтому я бы вращался «быстрее».
РЕДАКТИРОВАТЬ: Хорошо, я посмотрел на мой код, и это очень простой расчет.
Это было сделано с C #, так что терпите меня за синтаксис:
_angles.X += MathHelper.ToDegrees(changeInX / 100);
_angles.Y += MathHelper.ToDegrees(changeInY / 100);
мои углы были сохранены в двухмерном векторе (поскольку я вращался только на двух осях). Вы увидите, что я взял мои значения changeInX и changeInY и просто разделил их на 100, чтобы получить произвольное значение в радианах, а затем преобразовал это число в градусы. Отрегулируйте 100 для чувствительности. Имейте в виду, никакой математики здесь не было сделано, чтобы понять это. Я просто сделал несколько проб и ошибок, пока не получил что-то, что хорошо работало.