Понедельник, 23 Декабря 2024, 11:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Программирование анимации
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.

Ну и вообще любые замечания и советы приветствуются. Может я не тот движок выбрал, или не те инструменты, или не там беру спрайты, или ещё что.
Только пожалуйста сильно не пинайте, я всё-таки новичок. happy

Спасибо!
triptixДата: Среда, 12 Ноября 2014, 15:35 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Я делаю типа невидимого "бокса" для персонажа, и к нему привязываю анимацию (по центру-снизу) и координаты местонахождения. Потому что у каждого свои габариты, и потом столкновения замучаешься просчитывать. Но работаю не с явой, может там это и не применимо.
ArchidoДата: Среда, 12 Ноября 2014, 16:53 | Сообщение # 3
Сэнсэй
Сейчас нет на сайте
nikita1828
Судя по этому анимация в libGdx строится из набора TextureRegion'ов, которые содержат в себе текс. координаты участка текстуры (кадра). По идее, все что нужно сделать - это распарсить data файл, который генерит TexturePacker и на этой основе создать свои TextureRegion'ы. Но т.к. у TexturePacker'a есть свой API, то и парсить ничего не нужно (за вас все сделают), достаточно позвать у него findRegion например.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг