Ну, если вы начнете смотреть в горизонтальном направлении к горизонту, наклонитесь вверх на 90 градусов, затем поверните влево на 90 градусов, затем наклонитесь вниз на 90 градусов, вы будете смотреть в том же направлении, что и начали, но горизонт будет быть вертикальным (как если бы вы повернули на 90 градусов влево).
Редактировать : Я думаю, что проблема в том, что рыскание / тангаж / крен были бы уместными, если бы с камерой обращались как с самолетом. То, что вы, вероятно, хотите сделать, это рассматривать его как точку в сфере, отслеживая, где на сфере вы указываете камеру. Вместо рыскания / шага используйте сферические координаты, отслеживая тета (широта) и фи (долгота). Они могут звучать одинаково, но рассмотрим крайний случай, когда камера направлена прямо вверх. С помощью рыскания / тангажа вы все еще можете свободно регулировать рыскание и тангаж в этом прямом направлении. С тэта / фи вы можете регулировать тэту только вниз, и независимо от того, насколько вы скорректировали фи, уменьшение тэты все равно даст вам камеру, параллельную горизонту. Вот как работает камера FPS (вы не можете смотреть так далеко, что смотрите позади себя).
Редактировать 2 : Глядя на код камеры, с которой вы связаны, вы хотите использовать функции rotLati(float angle)
и rotLongi(float angle)
.