| Программирование анимации | 
|  | 
| 
| nikita1828 | Дата: Среда, 12 Ноября 2014, 15:16 | Сообщение # 1 |  | был не раз Сейчас нет на сайте | Всем привет! Это моё первое сообщение на форуме. Я по профессии программист, но игродевелоперством раньше серьёзно не занимался. А сейчас вот в собственное удовольствие решил написать 2d-файтинг под Андройд на libGdx.
 
 Для пилотной версии решил, для начала, выдрать спрайты из какой-нить старой игры.. Выбор пал на Mortal Combat. Спрайты брал отсюда:
 http://www.mortalkombatwarehouse.com/umk3/subzero/sprites/
 Потом спрайты упаковал TexturePacker-ом. И выводил в проге средствами libGdx-а
 
 Всё работает. Спрайты отображаются, анимация проигрывается... но не правильно.
 
 Проблема в том что в анимации персонажа у каждого кадра своя ширина и высота (пусто'ты вокруг перса обрезаны). Для того чтобы персонаж не дёргался при воспроизведении анимации, нужно каждый кадр рисовать со своими координатами.
 
 Понимаю что проблему можно решить расширив каждый кадр добавив в нужных местах пусто'ты. Но это муторно и наверное не правильно: хранить в файле пустоты - не комильфо.
 У TexturePacker-а есть опция "Trim/Crop", но я не понял как её использовать. Добавляю спрайты с пустотами и включаю "Crop" - ничего не происходит: спрайты вместе с пустотами так и попадают в атлас.
 
 Объясните мне, что я не так делаю. Нужно ли добавлять пустоты в кадры? Если да, то почему в инете выкладываются спрайты без пустот? Если нет, то как определять координаты вывода кадра? Где их прописывать? Уж не в самой же программе. Вроде в data-файле который TexturePacker генерит для LibGdx-а у каждого спрайта есть параметр offset, но он почему-то у меня всегда: 0,0.
 
 Ну и вообще любые замечания и советы приветствуются. Может я не тот движок выбрал, или не те инструменты, или не там беру спрайты, или ещё что.
 Только пожалуйста сильно не пинайте, я всё-таки новичок.
   
 Спасибо!
 |  |  |  |  | 
| 
| triptix | Дата: Среда, 12 Ноября 2014, 15:35 | Сообщение # 2 |  |   постоянный участник Сейчас нет на сайте | Я делаю типа невидимого "бокса" для персонажа, и к нему привязываю анимацию (по центру-снизу) и координаты местонахождения. Потому что у каждого свои габариты, и потом столкновения замучаешься просчитывать. Но работаю не с явой, может там это и не применимо. |  |  |  |  | 
| 
| Archido | Дата: Среда, 12 Ноября 2014, 16:53 | Сообщение # 3 |  |   Сэнсэй Сейчас нет на сайте | nikita1828 Судя по этому анимация в libGdx строится из набора TextureRegion'ов, которые содержат в себе текс. координаты участка текстуры (кадра). По идее, все что нужно сделать - это распарсить data файл, который генерит TexturePacker и на этой основе создать свои TextureRegion'ы. Но т.к. у TexturePacker'a есть свой API, то и парсить ничего не нужно (за вас все сделают), достаточно позвать у него findRegion например.
 
 C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
 |  |  |  |  |