live2d_characters
Тип: список
В этом ноде определяются Live2D-спрайты персонажей.
Так же, как и в случае со статичными спрайтами, каждый спрайтовый нод может содержать следующие параметры:
poses
positions
sizes
spritecolor
shortnames
default
Все параметры, кроме poses
, идентичны параметрам статичных спрайтов, поэтому здесь будут рассмотрены только отличия.
Кроме того, Live2D спрайты также могут содержать параметр layers
с информацией об анимационных слоях — синтаксис этого параметра также будет рассмотрен.
layers
Тип: список
Внутри данного параметра прописываются названия анимационных слоёв и анимаций, которые они содержат.
Слои делятся на два типа:
- Основные
- Вспомогательные
Основные слои — это те слои, состояние которых игра запоминает. Эмоции, положения рук, ног, головы и прочее. То, что должно быть записано в файле сохранения, если спрайт на экране.
Вспомогательные — слои для одноразовых анимаций, которые проигрываются и затем возвращают спрайт в исходное состояние. Это могут быть различные кивки, подпрыжки, махания руками и прочее. Информация о состоянии таких слоёв не записывается в файлах сохранений.
Определение слоёв и анимаций происходит в редакторе Unity, этот процесс рассмотрен в отдельной статье. В этой же статье будет рассмотрен процесс определения слоёв и анимаций в файле ресурсов мода, чтобы их можно было использовать внутри сценария.
Рассмотрим процесс определения нескольких слоёв:
# resources.yaml
---
live2d_characters
saya:
layers:
emotions:
- normal
- smile
- sad
hands:
- hands1
- hands2
- hands3
~shake:
- head
Здесь определяются 3 слоя — emotions
, hands
и shake
. Первые два — основные слои, для эмоций и положения рук соответственно, последний — вспомогательный. Внутри нодов слоёв прописаны названия анимаций, которые этот слой содержит.
Для определения вспомогательного слоя нужно перед его именем поставить символ ~
.
poses
Тип: список
Так же, как и у статичных спрайтов, внутри данного нода прописываются различные позы и их параметры.
Каждая поза может содержать следующие параметры, синтаксис которых идентичен аналогичным параметрам поз статичных спрайтов:
positions
sizes
spritecolor
default
Также им доступны два новых параметра:
skins
layers
layers
внутри позы определяет слои и анимации, действительные только для этой позы (или перезаписывает их, если слой с таким же названием прописан для всего спрайта в целом).
skins
же — аналог parts статичных спрайтов, в нём прописываются пути Live2D-префабов спрайта.
skins
Тип: список
Тип принимаемых ассетов: prefab
Синтаксис достаточно прост, внутри нода прописываются пути к префабам Live2D моделей:
# resources.yaml
---
live2d_characters:
saya:
poses:
front:
skins:
school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
Краткая форма записи
Ноды poses
и skins
необязательно указывать явно, если вы не намереваетесь использовать какие-либо другие параметры.
Допустим, тот же пример с определением позы front
и скина school_uniform
можно записать так:
# resources.yaml
---
live2d_characters:
saya:
front:
school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
Если бы мы захотели указать какие-то позиции, размеры, слои анимации и прочее — необходимо было бы явно указывать названия нодов.
Допустим, мы определяем слои анимаций и несколько позиций для всего спрайта персонажа в целом:
# resources.yaml
---
live2d_characters:
saya:
layers:
emotions:
- normal
- smile
- sad
hands:
- hands1
- hands2
- hands3
positions:
center: 0 -0.25
poses:
front:
school_unfiform: ~@[bundle]://characters/saya/front/school_uniform/model.prefab # путь к префабу внутри каталога
Т.к. нод спрайта содержит не только позы, но и другие параметры, нам нужно явно указать название нода с позами. Внутри же нода позы front
никаких других параметров, кроме скинов, нет — поэтому названием нода skins
можно пренебречь. Если бы нужно было указать какие-то дополнительные параметры для позы front
, скины бы прописывались внутри нода skins
.