0

libGDX の Camera クラスに問題があります。位置が変わっても視覚的に移動できません。

これは私がカメラをセットアップする方法です:

camera = new OrthographicCamera(frustumWidth, frustumHeight);

これは私がその位置を変更する方法です:

world.onUpdate(deltaTime, camera);
    renderer.render(world);
    camera.position.set(MathUtils.random(0, 800), MathUtils.random(0, 480), 0);
    //camera.position.set(
        //  world.dynamicObjects.get(GameWorld.MainPgID).pos.x * GameWorld.frustumToWorldRatio,
            //world.dynamicObjects.get(GameWorld.MainPgID).pos.y * GameWorld.frustumToWorldRatio, 0);

.render 関数の先頭で変更を送信します。

camera.update();
        batcher.setProjectionMatrix(camera.combined);
        batcher.begin();
        polygonBatcher.begin();

私が言ったように、位置は変わりますが、私が試した多くの組み合わせのうち、どれもうまくいきません. おそらく、カメラの仕組みを誤解していて、カメラではなくオブジェクトを移動する必要があるのでしょうか? 私にはばかげているように思えますが、カメラと呼ばれるのには理由があります。

4

1 に答える 1

1

影響を与えるすべてのバッチ/レンダラーに、結合されたプロジェクションマトリックスを適用する必要があります。

しかし、それ以外は問題ないようです。ステップバイステップでデバッグしてみてください。new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());いくつかの線(ShapeRenderer)またはスプライト(SpriteBatch)のみを使用して単純なプロジェクトを設定し、投影行列をに設定し、カメラcamera.combinedを変更camera.positionupdate()ます。それはそれをする必要があります。

次にcamera.position、カメラの錐台ですべてのレンダラーを変更すると、スプライト/ジオメトリのオフセットを変更せずに、それに応じてオフセットする必要があります。

ところで。ビューポートは0〜800ではなく、xの場合は-400〜400、yの場合はそれぞれ-400〜400です。

于 2013-01-12T19:54:02.323 に答える