Если вы знаете ширину и высоту фреймов, сколько фреймов в строке и какой фрейм вы хотите, то получить координаты x и y довольно просто:
frameX = ((frameNumber - 1) % columns) * frameWidth;
frameY = ((frameNumber - 1) / columns) * frameHeight;
Обратите внимание, что операция '/' должна быть делением int , short или byte , так как вам нужно округлить остаток, чтобы получить координаты X и Y в начале кадра, а не где-то посередине.
Эти формулы предназначены для спрайт-листа, где кадры идут слева направо, а затем сверху вниз. Если вы хотите наоборот, просто переключите операторы «%» и «/» и измените «столбцы» на «строки»:
frameX = ((frameNumber - 1) / rows) * frameWidth;
frameY = ((frameNumber - 1) % rows) * frameHeight;
Это также предполагает, что вы будете ссылаться на свои кадры, начиная с 1, однако если вместо этого индексировать их, начиная с 0, то часть '- 1' может быть удалена:
frameX = (frameNumber % columns) * frameWidth;
frameY = (frameNumber / columns) * frameHeight;
//assuming that frameNumber indexes from 0;
Кроме того, если вы просто хотите узнать, в каком столбце или строке находится кадр, то просто удалите части '* frameWidth' и '* frameHeight', которые будут возвращать индексы строки и столбца, начинающиеся с 0:
frameX = (frameNumber - 1) % columns;
frameY = (frameNumber - 1) / columns;
Надеюсь, это поможет.
Zistack