Анимация с вращением - PullRequest
       22

Анимация с вращением

0 голосов
/ 25 июля 2011

Я пишу игру, и теперь я начинаю понимать, что нужно улучшить производительность ( ссылка на игру (рынок) ).

Если вы не можетепроверить это: это змеиная игра с птицами.Вы управляете первой птицей (рисуя путь, по которому она будет следовать / используя dpad), а рой меньших птиц следует за ней по линии.Птицы анимированы и могут поворачиваться на 180 ° и отражаться (в зависимости от того, где они летят).

В данный момент я анимирую только первую птицу, затем уменьшаю ее и сохраняю в невидимомэлемент, который показан через 4 кадра (плавная анимация) вместо анимации каждой птицы в отдельности.Таким образом, для каждой птицы, которую вы видите на экране, есть 4 объекта с растровым изображением каждый.Теперь мой вопрос заключается в том, должен ли я составить таблицу спрайтов и уменьшить количество возможных поворотов (скажем, 1 набор спрайтов каждые 10 °) или рассчитать анимацию для каждой птицы или оставить ее в моем порядке?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Нет смысла делать ваши повернутые листы спрайтов вручную, я просто загрузил бы в один лист спрайтов.Затем создайте массив растровых изображений для каждого угла, а также поверните и скопируйте базовые листы спрайтов поверх каждого.(вам может понадобиться массив массивов для обработки анимации или отдельное вращение для каждого кадра листа спрайта). Это также позволяет вам с легкостью изменить свое искусство позже.

что-то вроде:

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 голосов
/ 26 сентября 2013

Вот простое объяснение анимации вращения:

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

...