で3Dゲームを作っていLWJGL
ます。このゲームでは、矢印キーを押すたびに、現在の向きに関係なく、その方向に画面が回転するようにします。これをコードに実装するのに苦労しています。glRotatef
回転 vector3f に基づく3 つの関数を使用しても、これは実現しません。が最初に呼び出されるため、上下の回転glRotatef(rotation.x, 1, 0, 0)
が機能しますが、左右は上または下を向いていない場合にのみ機能します。そうであれば、ユニバーサル y 軸を中心に回転し、カメラが回転します。別の実装で を使用できることgluLookAt()
がわかりましたが、同じ問題が発生すると思います。
EDIT 回転させたい方向に応じてglRotatef()が呼び出される順序を変更することで問題を解決したと思いました。私のゲームでは、一度に 1 つの軸だけを回転させるので、これでうまくいくと思いました。ある程度は機能しましたが、向きによっては機能しません。
if(updown){
glRotatef(rotation.x, 1, 0, 0);
glRotatef(rotation.y, 0, 1, 0);
} else if(leftright){
glRotatef(rotation.y, 0, 1, 0);
glRotatef(rotation.x, 1, 0, 0);
}
glTranslatef(position.x, position.y, position.z);