Skip to main content

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.