-1
我正在使用OpenGL 4.0,我試圖寫一個遊戲攝像頭有兩個屬性。 「攻角」和「旋轉」RTS風格的遊戲攝像頭編碼模型矩陣
我想構建一個非常類似於其他RTS遊戲的相機,例如魔獸爭霸3或Starcraft II,其中相機(默認情況下)以相當陡峭的角度面對地面。
我使用一些支持代碼,其作用非常類似於舊的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)到(寬度,高度,0) 這種嘗試主要是功能性的,除非y越大,地面距離越遠。我不確定是什麼導致了這一點,但我認爲它與這個代碼有關,因爲當我將AOA設置爲90(所以相機直接指向下方)時,它不會發生。
注意:我使用模型矩陣而不是視圖矩陣來處理攝像機的運動。