1

私は OpenGL でゲームを作る初心者です。私は地図を描きました (これは世界で、プレイヤーはそこに移動できます)。そして今、やりたいことは、カメラがプレイヤーを追跡することです (プレイヤーは画面の中央にあります)。私はこのようなことをしました:

GLU.gluLookAt(gl, 
                this.x, this.y, 0,
                this.x, this.y, 1.0f,
                0.0f, 0.0f, 0.0f);

this.x と this.y はプレイヤーの座標です。残念ながら動作しません :( 何も起こりません。これは 2D ゲームなので、パースペクティブなどはありません。

4

1 に答える 1

1

これはいくつかの方法で行うことができますが、おそらく最も簡単なのは電話することです

gl.glTranslatef( cameraX, cameraY );

glLoadIdentity呼び出しの後、フレームをレンダリングする前。

glTranslatefには累積効果があるため、シーン内のすべてがcameraXとcameraYによってオフセットされて描画されます。

これを機能させるには、各オブジェクトをレンダリングする前にglLoadIdentityを呼び出すのではなく、glPushMatrixとglPopMatrixを使用する必要があります。そうしないと、カメラの変換が失われます。


ちなみに、巨大な世界を持つことを計画している場合は、プレーヤーの位置を0,0にして、プレーヤーの代わりに世界を動かす必要があります。小さなゲームであれば大きな問題ではありませんが、オブジェクトのx値とy値が非常に大きい場合、浮動小数点の丸め誤差の問題が発生する可能性があります。それはあなたが今までに遭遇したものではないかもしれませんが、私が推測することを知っているのはいいことです。

于 2013-01-09T23:32:25.043 に答える