私は OpenGL 4.0 を使用しており、2 つのプロパティを持つゲーム カメラを作成しようとしています。「迎え角」と「回転」
Warcraft 3 や Starcraft II などの他の RTS ゲームと非常によく似たカメラを構築しようとしていますが、カメラ (デフォルトでは) はかなり急な角度で地面に面しています。
古いopengl glTranslatef、glRotatefと非常によく似た動作をするサポートコードを使用しています。現在の試みは次のようになります。
shaders->Model.Translate(-cameraPosition.x,-cameraPosition.y,-cameraPosition.z);
//Apply rotation
//shaders->Model.Rotate(rotation/M_PI*180.0f,0,0,1);
//Apply AOA
float aX = cos(2*3.141592 - rotation - 3.141592/2.0);
float aY = sin(2*3.141592 - rotation - 3.141592/2.0);
shaders->Model.Rotate(90.0f-(float)angleOfAttack/M_PI*180.0f,aY,aX,0);
その後、地面は (0,0,0) から (width,height,0) までの長方形として描画されます。この試みは、y が増加して地面が遠くなる場合を除いて、ほとんど機能します。何が原因なのかはわかりませんが、AOA を 90 に設定すると (カメラが真下を向いているため)、このコードが関係していると思われます。
注: 必要に応じてカメラの動きを処理するために、ビュー マトリックスの代わりにモデル マトリックスを使用しています。