我創建了一個相機類。可以用鼠標旋轉360度並上下移動。就像我的意圖一樣,就像所有的遊戲一樣。就像在所有的遊戲中一樣,前進和後退也是可能的。但我不知道如何實現左右移動。執行strafe - Opengl - 相機
我做到以下幾點:
這被稱爲每一幀:
gluLookAt(_posX , _posY , _posZ,
_viewX, _viewY, _viewZ,
_upX, _upY, _upZ);
我的移動功能
不工作:
void Camera::moveLeft()
{
float rot= (_viewY/180 * PI);
_moveX -= float(cos(rot)) * 0.5;
_moveZ -= float(sin(rot)) * 0.5;
}
不工作
向前移動場景:
當我只用鼠標移動時,沒有問題。但是,如果我使用這個功能,並用我的鼠標旋轉,我得到一些奇怪的相機運動
任何想法如何解決這個問題?
謝謝
@edit
所以我刪除了glTranslated聲明,我改變了我的moveLeft功能如下:
void Camera::moveLeft(){
float x = ((_viewY * _upZ) - (_viewZ * _upY));
float y = ((_viewZ * _upX) - (_viewX * _upZ));
float z = ((_viewX * _upY) - (_viewY * _upX));
float magnitude = sqrt((x * x) + (y * y) + (z * z));
x /= magnitude;
y /= magnitude;
z /= magnitude;
_posX -= x;
_posY -= y;
_posZ -= z;
}
我清楚地做一些錯誤的,因爲運動左右是「更好」,但仍然不是你所期望的。
如果你有時間,我已經編輯它,你能再次閱讀我的問題嗎?謝謝 – fibera 2011-05-25 15:46:43
@ user748790:完成。 – 2011-05-25 15:57:04
它必須是_viewX - = x,...- = y,...- = z。可能是一個錯字。但是,這工作,非常感謝你的幫助。 – fibera 2011-05-25 16:07:30