私はカメラクラスを作成しました。私のマウスで360度回転させて上下に動かすことができます。ちょうど私が意図したとおり、すべてのゲームのように。また、すべてのゲームのように前後に移動することもできます。しかし、私はどのように左右に移動する実装するのか分からない。strafeを実装する - Opengl - カメラ
私は、次の手順を実行します
これは、フレームごとに呼び出されます:
gluLookAt(_posX , _posY , _posZ,
_viewX, _viewY, _viewZ,
_upX, _upY, _upZ);
私の移動機能
doesntの仕事:
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
@ user748790:完了。 –
_viewX - = x、... - = y、...- = zでなければなりません。おそらくタイプミスでした。しかし、これは動作します、あなたの助けを大変ありがとうございます。 – fibera