我正在写游戏,现在我开始意识到必须改进性能(link to game (market))。
如果你不能看出来:这是一个像鸟一样的蛇式游戏。你可以控制第一只鸟(通过绘制一条路径来跟随/使用dpad),然后一群较小的鸟跟着它排成一行。这些鸟是动画的,可以旋转180°并镜像(取决于它们飞过的地方)。
此刻我只对第一只鸟进行动画处理,然后将其缩小并将其保存在一个不可见的元素中,该元素在4帧后显示(流动动画目的),而不是单独为每只鸟设置动画。因此,对于您在屏幕上看到的每只鸟,有4个对象,每个都有一个位图。现在我的问题是,我应该制作一个spritesheet并减少可能的旋转次数(例如,每10°一组精灵)或计算每只鸟的动画,或者保持我的方式吗?
答案 0 :(得分: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中的旋转图像速度惊人,能够以良好的帧速率旋转数百个小位图。
答案 1 :(得分:0)