Цитата archi_dan:
Юнити я знаю. Но это не совсем то что мне нужно. выходной формат нужен для веб. поэтому не подойдет.
О, если знаете Юню, то по чему бы не попробовать? Он под HTML 5 точно пакует, там в целевой платформе можно включить HTML 5.
Просто я делал только экзэшник, не пробовал никогда под ВЭБ. Но если Вы знакомы с Юней, то отчего бы не попробовать? Я делал нужное количество спрайтов (по количеству секвенций), вешал на них скрипты в зависимости от того, циклический он или это транзишн от одной циклической анимации к другой, и писал отдельный скрипт-контроллер, который реагирует на ввод с мышки/клавиатуры/кнопок UI и переключает и включает соответствующий айдл или транзишн спрайт (а на нём - скрипт с массивом-секвенцией картинок).
Если знать Юню, то это не сложно (но время займёт, конечно). Просто я ХЗ как это под веб, но почему бы не попробовать если Юня поддерживает упаковку в HTML 5?
Вот, например, мой скрипт для айдловой (циклической) анимации, которая будет крутиться пока не активировать какой-нибудь переход. И остальная логика там не сложнее, впринципе.
public class AnimStateIdle : MonoBehaviour
{ SpriteRenderer _image;
public Sprite[] _currentSprite;
int _spriteNumber = 0;
int _maxSpriteNumber;
public float _theNumerator = 1.0f;
float _deltaSecond;
bool _increase = true;
bool _decrease = false;
void Awake() {
_deltaSecond = _theNumerator / _currentSprite.Length; //Вычисляем FPS для нашего количества спрайтов _maxSpriteNumber = _currentSprite.Length - 1;
_spriteNumber = 0; Debug.Log(_deltaSecond);
_image = GetComponent<SpriteRenderer>();
StartState();
}
void StartState() {
StartCoroutine(ChangeSprite());
}
IEnumerator ChangeSprite()
{
yield return new WaitForSeconds(_deltaSecond);
_image.sprite = _currentSprite[_spriteNumber];
if (_increase) _spriteNumber += 1;
if (_decrease) _spriteNumber -= 1;
if (_spriteNumber == _currentSprite.Length)
{ _increase = false;
_decrease = true;
_spriteNumber = _maxSpriteNumber;
}
if (_spriteNumber == 0 && _decrease)
{
_increase = true; _decrease = false;
}
if (isActiveAndEnabled)
{ StartCoroutine(ChangeSprite()); }
}
}