2011-07-25 319 views
0

我正在寫一個遊戲,現在我開始意識到性能有待提高(link to game (market))。動畫與旋轉

如果你不能檢查出來:這是一個類似蛇的鳥類遊戲。你控制第一隻鳥(通過繪製一條路徑讓它跟隨/使用dpad),並且一羣較小的鳥繼續沿着它行。這些鳥是動畫的,可以旋轉180°和鏡像(取決於它們飛過的位置)。

此刻我只動畫第一隻鳥,然後將其縮小並將其保存在4幀後顯示的不可見元素(流體動畫目的)中,而不是單獨爲每隻鳥製作動畫。因此,對於您在屏幕上看到的每隻鳥,都有4個帶有位圖的對象。現在我的問題是,我應該製作一個Spritesheet並減少可能的旋轉次數(例如,每10°一組精靈)或計算每隻鳥的動畫,還是保持它的方式?

+0

你測試了這個實現你說的? – woliveirajr

+0

我想開始製作更大的spritesheet,但是在意識到要花費大約10個小時才能正確完成,我停止了,現在我要嘗試一下,但是沒有。 – SBoss

回答

1

手動旋轉精靈表沒有意義,我只是加載一個精靈表。然後爲每個角度製作一個Bitmaps陣列,並旋轉並複製每個角度的基礎精靈片。 (您可能需要一組數組來處理動畫,或者對精靈表的每一幀進行單獨旋轉)。這也讓您可以輕鬆地更改自己的作品。

類似:

Bitmap baseFrame; 
Bitmap rotatedFrame[]=new Bitmap[360/10]; 

... 

Matrix rotationMatrix=new Matrix(); 
rotationMatrix.setRotate(n*10); 
rotatedFrame[n]=Bitmap.createBitmap(baseFrame,0,0, 
            baseFrame.getWidth(), baseFrame.getHeight(), 
            rotationMatrix, false); 

的寬度和旋轉圖像的高度可能需要更大然後基本影像,你可能希望你將它設置爲圍繞中心旋轉,但你得到的想法

順便說一句,

在看看你的遊戲截圖我懷疑繪製你的背景可能有較大的影響,然後旋轉鳥。您可能想要分析您的代碼,以查看繪製每幅圖像需要多長時間。 (http://developer.android.com/guide/developing/debugging/debugging-tracing.html)。我會確保你的背景以RGB_565格式加載,在用軟件渲染時可以快很多。

我發現Android中的旋轉圖像的速度驚人地快,能夠以良好的幀速率旋轉數百個小的位圖。

+0

我不想使用太多的圖片,看到我的應用程序在某些設備上已經可以獲得OOME,儘管這應該幾乎是不可能的。但我想嘗試一下。你知道如何旋轉spritesheet中的單個精靈而不旋轉spritesheet的大小/寬度嗎?感謝RGB_565,我會研究這一點。 – SBoss

+0

@SBoss您可以嘗試創建一個新的畫布,然後使用canvas.setBitmap和canvas.rotate將旋轉的圖像繪製到您的精靈表上。如果你願意,你可以使用這個方法來構建一個大的精靈表。 – LukePH

+0

對不起,遲到的迴應..我有一些很好的美味假期:) 所以:你如何旋轉的精靈奇異,就像你旋轉整個spritesheet你不能切出適當的精靈不旋轉到你的座標會有點失敗的目的。 – SBoss