0

我正在写一个游戏,现在我开始意识到必须提高性能(链接到游戏(市场))。

如果你不能检查出来:这是一场与鸟类的蛇类游戏。您控制第一只鸟(通过绘制一条路径让它跟随/使用 dpad),一群较小的鸟沿着它排成一行。这些鸟是动画的,可以旋转 180° 和镜像(取决于它们飞过的地方)。

目前我只为第一只鸟制作动画,然后将其缩小并将其保存在一个不可见的元素中,该元素会在 4 帧后显示(流体动画目的),而不是单独为每只鸟制作动画。因此,对于您在屏幕上看到的每只鸟,都有 4 个对象,每个对象都有一个位图。现在我的问题是,我应该制作一个精灵表并减少可能的旋转次数(例如,每 10° 一组精灵)还是计算每只鸟的动画,还是保持我的方式?

4

2 回答 2

1

手动制作旋转的精灵表是没有意义的,我只需加载一个精灵表。然后为每个角度制作一个位图数组,并在每个角度上旋转和复制基本精灵表。(您可能需要一个数组数组来处理动画,或者对精灵表的每一帧进行单独的旋转)这也让您以后可以轻松地更改您的艺术。

就像是:

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 中旋转图像的速度非常快,能够以良好的帧速率旋转数百个小位图。

于 2011-07-26T13:32:29.523 回答
0

Here is the simple explanation of the Rotation Animation:

http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-android.html

于 2013-09-26T07:36:34.607 回答