私はこの問題を 2 日間解決しようとしてきましたが、既存の解決策を見つけることをあきらめました。
libgdx の学習を開始し、いくつかのチュートリアルを完了しました。そして今、学んだことをすべて使って、単純な横スクロール ゲームを作成しようとしました。libgdx の例があることはわかっていますが、Box2d と scene2d およびアクタ、タイル マップを組み込んだものは見つかりませんでした。
私の主な問題はカメラにあります。
ステージ用のカメラが必要です (私が知る限り、アクターのメソッド draw() に渡される SpriteBatch の射影行列に使用されます。これが間違っている場合は修正してください)。また、TileMapRender 用のカメラが必要ですrender() メソッドを呼び出します。また、一部のチュートリアルでは、GameScreen に OrthographicCamera があり、必要に応じて使用されます。
OrthographicCamera オブジェクトをメソッドに渡そうとしました。ステージのカメラと TileMapRenderer のカメラをどこでも使用しようとしました。元。
OrthographicCamera ocam = new OrthographicCamera(FRUSTUM_WIDTH, FRUSTUM_HEIGHT);
stage.setCamera(ocam); // In the other cases i replace ocam with stage.getCamera() or the one i use for the tileMap Render
tileMapRenderer.render(ocam);
stage.getSpriteBatch().setProjectionMatrix(ocam.combined); // I am not sure if this is needed
また、あらゆる場所で異なるカメラを使用しようとしました。
これらすべてを試した後、正確にいつ何が起こるかはわかりませんが、何が起こるかをリストします。
- 画面には何も表示されていません ( 描かれているものからカメラが離れている可能性があります )
- debugRenderer からタイル マップと等高線を確認できます (debugRender も使用しますが、カメラに干渉するとは思いません) が、アクターのスプライトは表示されません (おそらく画面外)。
- 必要なものはすべて表示されますが、アクターと、彼に追従するはずのカメラを動かそうとすると、スプライトが本体よりも速く移動します (緑のデバッグ スクエア)。
だから私の主な質問は次のとおりです。
- 複数のカメラがあるとどうなるかわかりません。実際にモニターで「スルー」するのはどれ?
- 複数のカメラを使用する必要がありますか?
また、私は OpenGL ES 2.0 を使用していることに言及する必要があると考えました。
長い質問で申し訳ありませんが、私には少し複雑なので、詳しく説明する必要があると思いました。