亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

LibGdx Box2d 和 Scene2d 上不同設備之間的縮放

LibGdx Box2d 和 Scene2d 上不同設備之間的縮放

慕萊塢森 2023-07-28 10:09:33
我正在使用 Scene2d 和 Box2d 來處理 LibGdx。我使用 Scene2D 設計了 2 個階段。第一個階段用于 GUI,例如按鈕,第二個階段包含帶有固定到我的 Box2d 對象坐標的圖像的 Actor(在我的例子中是簡單的矩形):當我在 PC 上運行游戲時,我得到以下圖像:當我在 Galaxy S9+ 上運行它時,我收到以下圖像:正如您所看到的,背景和 box2d 對象在 PC 和 Android 上都能正確縮放。問題是,與 Android 相比,我的演員圖像在 PC 上發生了位移(牛仔圖像)。我縮放 Box2D 以獲得更好的物理效果,但從那時起我在跨平臺縮放對象時遇到了麻煩。代碼:    //My base screen, other screens extend this one:    public BaseScreen(){    Box2D.init();    mainStage = new Stage();    uiStage = new Stage();    manager = new AssetManager();    debug= new Box2DDebugRenderer();    world = new World(new Vector2(0,0),false);    loadAssetmanager();    //Box2d Sprites are initialzed in here:    initialize();    camera= new OrthographicCamera();    camera.setToOrtho(false,1024,1024);    debugMatrix= camera.combined.cpy();    debugMatrix.scale(32,32,0);    mainStage.getViewport().setCamera(camera);    camera.update();    //This BaseScreen class will initialize all assets from its subclasses here.    setMultiplexer();    }背景:我是一名住院醫師,自學爪哇語。我正在嘗試為我的醫學生設計一個小型模擬,我希望他們能夠在個人電腦、手機或平板電腦上訪問它。我需要基本的 Box2D 物理(我沒有時間在每周工作 40-70 小時的情況下編寫自己的物理引擎),因此 LibGdx 和 Box2d 對我來說是理想的框架。任何意見將不勝感激。
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊


這是一個簡單的。我初始化了 mainStage() 并且沒有向它傳遞視口。因此 LibGdx 創建了自己的默認視口。當我查看 LibGdx 中 Stage() 類構造函數的源代碼時,我發現默認的 Viewport 是一個設置為 Gdx.graphics.getWidth()、Gdx.graphics.getHeight() 的 ScalingViewport,這會讀取每個設備的寬度/高度并以不同的方式縮放它:


? ? /** Creates a stage with a {@link ScalingViewport} set to {@link?

? ? ? ? Scaling#stretch}. The stage will use its own {@link Batch}

? ? *? ?which will be disposed when the stage is disposed. */

?public Stage () {

? ? this(new ScalingViewport(Scaling.stretch, Gdx.graphics.getWidth(),?

? ? Gdx.graphics.getHeight(), new OrthographicCamera()), new SpriteBatch());

? ? ownsBatch = true;

? }

因此,為了解決該問題,我更改了以下代碼,而不是:


mainStage = new Stage();

我將代碼更改為,以便每個設備都會縮放到相同的寬度/高度:


?mainStage = new Stage(new StretchViewport(1024,1024));

此更改基本上將視口設置為 1024x1024 像素,現在可以在我的 PC、Galaxy S9+/其他設備上正確縮放。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號