Как узнать нужные куски спрайтов по данному тексту?

Есть спрайты и текстовый документ к ним, в котором указаны области спрайта:
grid_size 40 40
  opaque

//==============================================================================
  use_surface sprites/tile/stone1.png	//Путь к картинке

  sprite wall_stoneA_00 { grid 0 0 gsize 2 2 }
  sprite wall_stoneA_01 { grid 2 0 gsize 2 2 }
  sprite wall_stoneA_02 { grid 0 3 gsize 1 2 }
  sprite wall_stoneA_05 { grid 0 2 gsize 2 1 }
  sprite wall_stoneA_03 { grid 1 3 solid 1 }
  sprite wall_stoneA_04 { grid 1 4 }
  sprite wall_stoneA_10 { grid 2 2 }
  
  sprite wall_stoneA_11 { grid 3 2 }
  sprite wall_stoneA_12 { grid 2 3 }
  sprite wall_stoneA_13 { grid 3 3 }
  sprite wall_stoneA_14 { grid 2 4 transparent }
  sprite wall_stoneA_15 { grid 3 4 transparent }

//==============================================================================
  use_surface sprites/tile/stone2.png

  sprite zabradli { rect 120 120 40 20 pivot 0 -20 transparent }
  sprite wall_stoneA_06 { grid 1 2 }
  sprite wall_stoneA_07 { grid 1 1 }
  sprite wall_stoneA_08 { grid 2 2 }
  sprite wall_stoneA_09 { grid 2 1 }

  sprite columnA_top    { grid 3 0 transparent }
  sprite columnA_middle { grid 3 1 transparent }
  sprite columnA_bottom { grid 3 2 transparent }

  sprite wall_arc_01 { grid 0 0 transparent }
  sprite wall_arc_02 { grid 1 0 transparent }
  sprite wall_arc_03 { grid 2 0 transparent }
  sprite wall_arc_chain_01 { grid 0 1 gsize 1 1 transparent }

  sprite wall_half_01 { rect 0 0 40 20 pivot 0 0 }
  sprite wall_half_02 { rect 20 80 20 40 pivot -20 0 }
  sprite wall_half_03 { rect 20 80 20 40 pivot 0 0 }
  sprite wall_half_04 { rect 40 100 20 20 pivot -20 0 }
  sprite wall_half_05 { rect 40 100 20 20 pivot 0 0 }

  sprite photo1 { rect 0 80 6 6 transparent in_editor 0 }	// Для анимация
  sprite photo0 { rect 0 86 6 6 transparent in_editor 0 }	// Для анимация
  anim   photo  { time_step 100 skey photo0 skey photo1 send }	//Анимация из двух верхних картинок

  sprite wall_noidea_10 { grid 0 4 transparent }
  sprite wall_noidea_11 { grid 1 4 transparent }
  sprite wall_noidea_12 { grid 2 4 transparent }
  sprite wall_noidea_13 { grid 3 4 transparent }

//==============================================================================


Как удобно узнать область нужного мне спрайта, желательно хоть как то автоматизировать данный процесс, так как таких файлов более 40 и уж больно все длинные ( ?

Если с grid и rect 20 80 20 40 более менее понятно, 20px с верху, 80px с лева, и размер нужной области для вырезания 20x40px, то вот с pivot я что то не совсем понял, за что он отвечает ?

И может кто-то видел уже раньше похожую структуру описания спрайтов, в какой программе назначали им области ?
  • Вопрос задан
  • 404 просмотра
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Больше всего похоже на что-то кастомное для PyGame.
Можете написать простенький скрипт на Lua или том же Python чтобы переконвертировать эти файлы скажем в JSON.
Ответ написан
angru
@angru
pivot, скорее всего, отвечает за точку вращения. т.е. если размер спрайта 40х40, а pivot = (20, 20), то спрайт будет вращаться вокруг своего центра, а если (0, 0) то вокруг левого верхнего/нижнего(в зависимости от какого угла экрана начинается отсчет) угла.

хотя судя по координатам (-20, 0) - это может мыть и какое-то постоянное смещение. например, вы размещаете спрайт в точке (30, 30), но при таком pivot он будет находиться в точке (10, 30).

Точнее сказать трудно, это вам самому надо поиграться со смещениями, попробуйте изменить что-нибудь в файле и посмотреть, что изменится в игре.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы