Программирование анимации
|
|
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++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |