Спрайт Анимация - Доступ к кадрам в текстуре - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть относительно простая проблема, которая ведет меня к стене.

Проблема: Мне нужен алгоритм для вычисления координат кадра на листе спрайта.

У меня есть текстуры, которые могут быть 128x128 или 256x256 или 512x512 (пикселей). Они могут иметь кадры 32 или 64. При загрузке текстуры я сообщаю своей игре, какой будет размер кадров, поэтому я могу разделить размер кадра на ширину / высоту текстуры и получить количество строк и столбцов. И если необходимо, я могу умножить их, чтобы найти общее количество кадров в текстуре.

Пример: У меня есть загруженная текстура размером 256x256 с рамкой 64. У меня четыре строки и четыре столбца. Мне нужно нарисовать кадр 12 на экране, поэтому моя программа должна найти координаты сетки на текстуре, (0, 3).

Я надеюсь, что это изображение проясняет, что я имею в виду:

http://i.stack.imgur.com/sF6GJ.png

Меня раздражает, насколько простым должен быть алгоритм, но я полагаю, вот что мешает мне найти правильный ответ, любая помощь очень ценится.

1 Ответ

1 голос
/ 14 декабря 2011

У вас уже есть размер листа спрайта (который составляет 128 * 128, 256 * 256 или 512 * 512), у вас также есть размер каждого кадра, говорит 64 * 64).

ТогдаВы можете получить значение источника кадра, умножив номер кадра на ширину кадра, а затем разделив результаты с шириной текстуры.результаты деления - это строка, а остаток - х источника.затем просто умножьте строку на высоту кадра, чтобы получить начало координат кадра y.

например.размер фрейма - 64 * 64, спрайт - 256 * 256.Предположим, мы получаем кадр номер 7.

frameNo*frameSize.width = 448.
row = 448/spritesheet.width = 448/256 = 1
origin.y = column*frame.height = 1*64 = 64.
origin.x = 448 % 256 = 192

, поэтому источник (192,64).

...