2011-09-04 52 views
4

我想知道在libgdx中是否有一種簡單的動畫方法。我正在考慮一個API,我可以指定紋理的持續時間和結束位置(就像在Flash的Tween庫中一樣)。libgdx中的動畫

我在谷歌搜索和最近的東西,我得到的是動畫類libgdx有,我相信,需要用戶指定每個關鍵幀的紋理。

new Animation(0.5f, texture1, texture2, texture3); 

回答

11

您可以使用TextureRegion#分裂(紋理,tileWidth,tileHeight)得到了一堆紋理區域的一個紋理,如果他們在一個網格中。您也可以使用一組鬆散圖像上的TexturePacker將它們打包成單個紋理,然後使用TextureAtlas加載。這有一個好處,它可以從每個框架中去除空白以獲得更好的打包效果,並且也可以做別緻的東西(如果兩個框架是相同的,它只會打包一次)。將您的框架圖像命名爲anim_1.png,anim_2.png等,然後根據框架編號將所有名爲「anim」的紋理區域作爲有序列表。

另請注意,libgdx中的Animation類非常簡單。不要猶豫,如果它不符合你的需求,寫你自己的。動畫類只有大約20行代碼。

2

這取決於你想要什麼樣的動畫。如果它是基於不同圖像的動畫,那麼是的,您應該使用具有不同紋理區域的Animation類。但是,如果您想要基於移動插值的動畫,則應該使用補間庫,就像在Flash中一樣。

Libgdx有一個內置的Interpolator幫助程序,它允許您使用緩動來創建簡單的插值。如果你想要一個像閃存一樣的完整補間引擎,可以看看java Universal Tween Engine

0

在libgdx中進行動畫製作很簡單。我所做的是在Animation參數中使用一組紋理或紋理區域,而不是放置很多紋理或紋理區域。然後我宣佈我然後設置動畫的playmode像這樣 - >animation.setPlayMode(Animation.PlayMode.LOOP);它的作品。我使用像這樣設置的float runTime變量繪製動畫runTime + = delta或runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);