我正在写一个游戏,现在我开始意识到性能必须提高(link to game (market))。
如果你不能查看它:这是一个与鸟的蛇一样的游戏。您控制第一只鸟(通过绘制一条路径让它跟随/使用dpad),然后一群较小的鸟排成一条线跟随它。这些鸟是动画的,可以旋转180度并进行镜像(取决于它们飞过的位置)。
目前,我只制作第一只鸟的动画,然后缩小它,并将其保存在一个不可见的元素中,该元素在4帧之后显示(流畅的动画目的),而不是单独地动画每只鸟。因此,对于你在屏幕上看到的每只鸟,有4个对象,每个对象都有一个位图。现在我的问题是,我是应该制作一个spritesheet并减少可能的旋转次数(例如,每10°一组精灵),还是计算每只鸟的动画,还是保持我的方式?
发布于 2011-07-26 21:32:30
手工制作旋转的精灵工作表是没有意义的,我只需要加载一个精灵工作表。然后为每个角度制作一个位图数组,并在每个角度上旋转和复制基础精灵工作表。(您可能需要一个数组数组来处理动画,或者对精灵工作表的每一帧进行单独的旋转)这也允许您在以后轻松地更改您的艺术。
类似于:
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中的旋转图像速度惊人,能够以良好的帧率旋转数百个小位图。
发布于 2013-09-26 15:36:35
以下是旋转动画的简单说明:
http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-android.html
https://stackoverflow.com/questions/6815378
复制相似问题