1

CameralibGDX で myとsを適切に構成Spriteして、原点が左下隅にある 2D 座標系で適切に表示されるようにしようとしています。

Cameraはこのように設定しました:

cameraWidth = Gdx.graphics.getWidth();
cameraHeight = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1, cameraHeight/cameraWidth);

そして、私は次のように設定しましたSprite

sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);
sprite.setScale(scale);
sprite.setPosition(startX,startY);

私の問題はsprite.setSize(x,y). すべてのスプライトのサイズを に設定すると、(1, texture aspect ratio)すべてが適切な表示比率で描画されます (押しつぶされたり引き伸ばされたりすることはありません) が、正しい場所には何も描画されません。たとえば、(0,0) に何かを描画すると、左下隅が画面の左側から離れ、ピクセル数だけ上に描画されます。

比率を変更することで、さまざまな場所に描画できることに気づきました。つまり(1, display aspect ratio)、適切な場所に描画するのにかなり近いように設定すると、左下隅ではなく、中心から描画されます。 LibGDX が指定します。唯一の問題は、すべての画像がつぶれたり引き伸ばされたりして表示されることです。これは良くありません。

これは単純な問題のように思えます。これを設定する方法を知りたいだけなので、適切な場所と適切な縦横比で物事を描画する適切な座標系を使用できます。ありがとう。

4

2 に答える 2

2

画面の縦横比に合わせてビューポートを変更すると、画面が正方形でない限り、(0, 0) は画面の左下に表示されなくなります。画面の幅が高さよりも広い場合、x 軸の表示部分は 0.0 から 1.0 になりますが、y 軸の 0.0 は画面の下部から離れた場所になります。

(0, 0) が画面の左下になるようにカメラを調整し、表示される y 軸がgrpicsHeight / graphicsWidthまでしか上がらないことを覚えていれば、座標の問題は解決するはずです。

カメラは左下ではなく、画面の中央を指すように設定することをお勧めします。正確にそれを行う例がここにあり、常に画面の中央にある 2:1 の長方形を描画し、サイズをどれだけ変更しても常に 2:1 の比率になります。

于 2013-03-01T11:04:50.317 に答える
0

この問題の解決策を見つけました:

カメラを直交に設定します (既に正投影カメラですが)。

camera.setToOrtho(false,1,screen height / screen width);

また、各スプライトの位置を に設定する必要があります(x - sprite.getWidth()/2, y - sprite.getHeight()/2。これを考慮して、Spriteクラスを拡張し、メソッドをオーバーライドしました。setPositionこれで、位置が設定されるたびに、左下と左上に配置して、Sprite「彼らが行くと思う」場所に行くことになります。setPosition(0,0)setPosition(1,height/width)

奇妙なことに、これは (x,y) ポイントを中心にすべてのスプライトを描画します。これは、位置から幅/2 と高さ/2 が減算されているため意味がありますが、値を減算しないsetPositionと左下からスプライトが中央に配置されませんコーナー - 私が理解していない方法で中央に配置されています。

于 2013-03-02T01:29:35.837 に答える