Страница 1 из 1

Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 25 июн 2022, 21:44
Картман
Добрый день!
Делаю 2D top-down бродилку с 8-ю направлениями движений. Сами модельки сделаны в Blender и рендерят кучу спрайтов в низком разрешении PNGA (как в diablo2 / starcraft 1).
В анимации по кадрам меняется спрайт walk001 на walk002 и тд.
В результате у меня есть на каждого персонажа (игрок, враги, NPC) 8 анимаций по 5-20 кадров для движения, 8 для атаки и 8 для ожидания.

Времени на "закидывание спрайта на каждом кадре" уходит прилично, и это пока лишь несколько основных персонажей. В последствии их будет больше и соответственно сам вопрос:
Есть ли какой то полуавтоматический способ назначить на каждую анимацию в аниматоре, к примеру "все спрайты из папки Walk_UpRight по очереди на SpriteRenderer. количество кадров равно количеству файлов в папке".
Количество кадров в анимации не фиксировано (пока не определился с продолжительностью анимаций и эффектом смены кадра), поэтому проименовать спрайты от нуля до Х и заменять их - не вариант.

А то сегодня поправил модель торговцу и убил пол часа лишь на перетаскивание новых спрайтов

Re: Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 25 июн 2022, 22:16
waruiyume
Нажать замок в окне анимации, выделить нужные спрайты через шифт, перетащить их в окно анимации.

Re: Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 25 июн 2022, 23:42
Картман
Не понял что вы имеете в виду. Если я перенесу через шифт все спрайты, у меня будет одна анимация на 100500 действий. И это все равно придется каким то образом потом резать (возможно скриптом, что больно).

Я же спрашиваю о том, как в разные анимации перенести спрайты автоматически, так как ручником на это уйдет слишком много времени
Вот одна анимация на которую наложены только нужные спрайты (движение в одну из сторон. одного из персонажей)
Скрытый текст:
Изображение


А вот число этих анимаций
Скрытый текст:
Изображение

Re: Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 26 июн 2022, 00:29
1max1
Там вроде если выделить все картинки и перетащить их мышкой в иерархию сцены создастся анимация автоматически, но это не точно.

Re: Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 26 июн 2022, 01:43
Картман
1max1 писал(а):Там вроде если выделить все картинки и перетащить их мышкой в иерархию сцены создастся анимация автоматически, но это не точно.

Да, создается. Однако это подразумевает что при каждом изменении в спрайте (цвет шапки поменять захочу), придется на каждое направление анимации и каждое действие по новой перетаскивать спрайты в иерархию, переименовывать их в соотетствие с прошлыми и проверять что нигде и ничто не испорчено ручником.

Попробую перефразировать вопрос. Есть ли какой-то готовый инструмент для привязки сущности типа "анимация" к конкретной папке в проекте? Что бы даже если я добавлю еще один спрайт в конце, он добавился в конце анимации

Re: Как упростить назначение новых спрайтов в анимации?

СообщениеДобавлено: 26 июн 2022, 02:44
1max1
Да, создается. Однако это подразумевает что при каждом изменении в спрайте (цвет шапки поменять захочу), придется на каждое направление анимации и каждое действие по новой перетаскивать спрайты в иерархию, переименовывать их в соотетствие с прошлыми и проверять что нигде и ничто не испорчено ручником.

Если менять спрайт не через юнити, а через папку винды (удалил старый, вставил новый), то спрайт будет заменен без потери ссылки т.к. файл мета не будет удален. После этого действия достаточно будет нажать ctrl + r в юнити.
Попробую перефразировать вопрос. Есть ли какой-то готовый инструмент для привязки сущности типа "анимация" к конкретной папке в проекте? Что бы даже если я добавлю еще один спрайт в конце, он добавился в конце анимации

Ну например загрузка спрайтов через https://docs.unity3d.com/ScriptReferenc ... adAll.html и создание клипа в рантайме через скрипт https://docs.unity3d.com/ScriptReferenc ... Curve.html. Или можно создавать все анимации сразу в редакторе одной кнопкой, но надо будет написать скрипт для редактора.