我目前正在嘗試學(xué)習(xí) java 的 LibGDX 游戲引擎。我使用的是平鋪地圖,每個(gè)平鋪為 32*32 像素。我還有一個(gè)尺寸為 48*64 的角色精靈。在我的游戲中,我將一個(gè)單位定義為地圖上的一個(gè)圖塊。由于某種原因,我的地圖渲染正確,但玩家精靈渲染得異常大,而不是大約 2 平方單位的預(yù)期大小。我嘗試過(guò)在線搜索類似的問(wèn)題,但找不到與我的問(wèn)題類似的內(nèi)容。我知道這與我正在使用的縮放有關(guān),但我不知道解決它的好方法。當(dāng)然,一種方法是在使用batch.draw()函數(shù)繪制時(shí)簡(jiǎn)單地縮小玩家精靈,但我覺(jué)得這不是必要的。@Override 公共無(wú)效創(chuàng)建(){ world = new World(new Vector2(0, -20), true); //Create Box2d world debugRenderer = new Box2DDebugRenderer(); player1 = new Player(); camera = new OrthographicCamera(WORLD_WIDTH, WORLD_HEIGHT); //Create the camera I'm using, with width = height = 20 map = new TmxMapLoader().load("maps/Maptest.tmx"); //Load a map created in Tiled this.mapObjects = map.getLayers().get(0).getObjects(); ObjectMapper.createShapes(this.mapObjects, this.world); //Load shapes from map for collision management ObjectMapper.setSpawn(player1, mapObjects, world); //Set spawnpoint from object in the Tiled map batch = new SpriteBatch(); renderer = new OrthogonalTiledMapRenderer(map, 1/PPT); //Create a tiled map renderer with unit scale 1/32 camera.update();}@Overridepublic void render () { player1.update(); //Update player position camera.position.set(player1.getX(), player1.getY(), 0); //Set position to players position camera.update();}我希望精靈的大小與玩家碰撞盒(圓形)的大小大致相同,其半徑為一個(gè)單位。相反,它變得非常大:https://i.gyazo.com/6d814d10cd5f9bec322b601d538cb9ee.png完整的精靈看起來(lái)像這樣:https://i.gyazo.com/03178769d4a3b4beaba1612c76d37386.png提前致謝:)
1 回答

回首憶惘然
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
我會(huì)完全避免使用 Sprite 類。在 LibGDX 中,它被創(chuàng)建為高度優(yōu)化的東西,但它將資產(chǎn)(TextureRegion)與游戲模型對(duì)象(位置和大小等)混為一談,并且違反了組合繼承準(zhǔn)則。它還在 StackOverflow 上引起了許多問(wèn)題,因?yàn)槿藗儧](méi)有意識(shí)到它繼承自 TextureRegion,但并不意味著通過(guò)將其傳遞給 SpriteBatch 來(lái)繪制(它并不意味著被當(dāng)作一個(gè) TextureRegion)。要正確繪制它,您應(yīng)該調(diào)用sprite.draw(batch)
,而不是batch.draw(sprite, ...)
。
您已經(jīng)有一個(gè) Player 類。它應(yīng)該只引用TextureRegion而不是Sprite。您可以為您的 Player 類指定大小和位置(您實(shí)際想要的大?。?/p>
添加回答
舉報(bào)
0/150
提交
取消