2016-04-07 7 views
0

私の作ったゲームは現在混乱していますが、長いので変更する神経がありません。だから、私のPlayStateはカメラなしで作られており、WIDTH OD%の計算に作られて...ビューポートが画面を変更しているのを待ちます

しかしまあ、それはたくさん速かったので、今、私は、カメラのビューポートのと私のメインメニューを作った...

PlayStateを直接起動すると正常に動作します。しかし、MainMenuからPlayStateを起動すると、ビューポートがプリセットされているように見えます。私のゲームは全く変わっています。 0,0は真ん中にあるようですが、ロジックの作業が一切ありません...

ビューポートをリセットするにはどうしたらいいですか?または、私が正しい場合、setProjectionMatrix(camera.combined)はまだそこにいるようです。それを取り除くには?あなたのPlayStateのrenderメソッドの開始時に

+0

あなたはScene2Dを使用したり、3Dでいますか?画面を変更するときに新しいカメラを作成しようとしましたか? – Nanoc

答えて

0

、フルスクリーンサイズに、ビューポートをリセットするために

Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

を呼び出します。また、MainMenuを使用しないときに使用していたものに、バッチの投影行列を設定する必要があります。 PlayStateがカメラを使用していない場合は、マトリックスが画面のサイズに設定されているか、またはおそらく恒等行列でした。ですから、これらのいずれかを使用できます。

spriteBatch.getProjectionMatrix().setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

または

spriteBatch.getProjectionMatrix().idt(); 
+0

ニース、それは素晴らしい、ありがとう...私はコンストラクタでそれらの2つのコマンドを与える場合、なぜ私はそれが動作しないのですか?何度も電話をする必要はありますか? –

+0

アプリケーション全体に対して1つのOpenGLビューポートしかありません。ビューポートオブジェクトはそれを変更しますが、自動的にデフォルトに戻すことはありません。 MainMenuのViewportはOpenGLのビューポートを変更していますので、PlayStateはデフォルトのものを期待していますので、その間に切り替えるたびに変更する必要があります。また、2つのクラスが1つのSpriteBatch(メモリとロード時間を節約する必要がある)を共有している場合、SpriteBathは、それぞれが必要とする投影行列を使用するように設定する必要があります。 – Tenfour04

+0

また、デバイス間で画面の大きさが劇的に異なるため、カメラを使用しないか、少なくとも適応投影行列を手動で計算するのは悪い考えです。 – Tenfour04

関連する問題