私はむしろlibgdxの開発者ですが、私はしばらく問題を抱えていますので、ここで質問しました。ビューポートを使用したlibgdxカメラの位置
私はFillViewport、TiledMap、Scene2d、OrtographicCameraを使用します。私はカメラが私のプレーヤーのインスタンスに従うことを望みますが、境界が定義されています(マップ・サイズに等しい)。それは、カメラが決して地図の外に出ることは決してないので、プレーヤーが地図の終わりに来ると、カメラは追従しなくなり、画面自体の端に行きます。たぶん、複雑に聞こえるかもしれませんが、シンプルで、私はあなたが私の言いたいことを知っていると確信しています、それはあらゆるゲームで使われています。
I 4つの値計算:
camera.position.set(Math.min(maxCameraX, Math.max(posX, minCameraX)), Math.min(maxCameraY, Math.max(posY, minCameraY)), 0);
(POSX、POSY:Iは、単位変換、camera.zoom等のような必要なものは、その後、私は、このようなカメラの位置を設定しないで除去
minCameraX = camera.viewportWidth/2;
minCameraY = camera.viewportHeight/2;
maxCameraX = mapSize.x camera.viewportWidth/2;
maxCameraY = mapSize.y - camera.viewportHeight/2;
を基本的にプレイヤーの位置にカメラを設定していますが、それが高くても小さすぎても、前に定義された最大値または最小値に設定されます。 (私もMathUtils.clamp()を試して同じことをします。
これまでのところすべてが完璧です。縦横比が変わると問題が発生します。デフォルトでは1280x768を使用していますが、私の電話は1280x720です。
最大値と最小値を変更し、比の差を計算して計算に加え、カメラのサイズを変更しようとしましたが、FillViewportの動作が原因で画面が切れてしまいました。 、さまざまなビューポート、その他のものがありますが、成功しません。
ありがとうございます。 ありがとう
正確にはどのような問題がありますか?あなたのカメラは、もはや動作しないメカニズムに縛られていますか、または画面の一部が途切れてしまうという問題ですか? – noone
第2のもの。上端と下端が切り取られているので、たとえば地図の終了フレームは表示されません。もちろん、私はそれがFillViewportの仕組みだと知っていますが、カメラの境界を修正して修正するのは可能でしょう –
この場合にはうまくいかないのですが、 'getTopGutterHeight()'と 'getBottomGutterHeight() ) 'をminCameraYとmaxCameraYに追加してください(または、別の方法で、addの代わりにsubstractしてください) – noone